じ☆ve冰风 发表于 2026-1-26 00:14:52

搓了一个地图显示功能

类似于地图名显示,但加了一些功能,字体修改之类的,还加了各种地图风格的外观修改(?)
以下是代码RUBY 代码
#传送到目的地时目的地名显示并维持一段时间再消失
#另外内容:地图特有的风格显示(?)
#示例:地图名显示:测试地图(主要的地图名显示),2(需要的图片名的号数),测试中.....(下面的小标题)
module Show_Map_Set
      Note=/地图名显示[::](\S+)/
      Text_Font_Size=90
      #地图名未设置不会显示
      Text_Font_Name="kaiti"#地图名字体
      Title_Font_Name=""#地图描述字体名
      Title_Font_Size=20
      Map_Border=90
      Time_Set=125#保留的帧数
end
class Game_Map
      def map_set_note
                @map.note=~ Show_Map_Set::Note ? note=$1 : note= nil
                returnnilunless !note.nil?
                note_l=note.split(/\s*,\s*/)
      end
end
class Window_Base < Window
def draw_mapborder_set(name,index, x, y, enabled = true)
    bitmap = Cache.system("map_border"+name)
                size=Show_Map_Set::Map_Border
    rect = Rect.new(index % 2 * size, index / 2 * size, size, size)
    contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
end
end
class Window_Mapset_Show < Window_Base
def initialize
    super(0,80, Graphics.width, Graphics.height/2)
    self.opacity = 0
    self.contents_opacity = 0
    @show_count = 0
    refresh
end
def close
    @show_count = 0
    self
end
defopen
    refresh
    @show_count = Show_Map_Set::Time_Set
    self.contents_opacity = 0
    self
end
def update
    super
    if@show_count > 0 && $game_map.name_display
      update_fadein
      @show_count -= 1
    else
      update_fadeout
    end
end
#--------------------------------------------------------------------------
# ● 更新淡入
#--------------------------------------------------------------------------
def update_fadein
    self.contents_opacity += 16
end
#--------------------------------------------------------------------------
# ● 更新淡出
#--------------------------------------------------------------------------
def update_fadeout
    self.contents_opacity -= 16
end
      def map_text_font
                contents.font.name=Show_Map_Set::Text_Font_Name
                contents.font.size=Show_Map_Set::Text_Font_Size
      end
      def title_text_font
                contents.font.name=Show_Map_Set::Title_Font_Nameif !Show_Map_Set::Title_Font_Name.empty?
                contents.font.size=Show_Map_Set::Title_Font_Size
      end
def refresh
    contents.clear
                map_text_font
                note=$game_map.map_set_note
    unless note.empty?
                        if note.size>1
                              size=note.size
                              rect_1=text_size(note)
                              rect_2=contents.rect
                              draw_mapborder_set(note,0, rect_1.width-(note.size-1)*90, rect_1.height-30, enabled = true)
                              draw_mapborder_set(note,1, rect_1.width+90, rect_1.height-30, enabled = true)
                              if !note.nil? || !note.empty?
                                        title_rect=Rect.new(rect_2.x,rect_2.y+50,rect_2.width,rect_2.height)
                                        draw_text(rect_2, note, 1)
                                        p rect_1
                                        title_text_font
                                        draw_text(title_rect, note, 1)
                              else
                                        draw_text(rect, note, 1)
                              end
                        else
                              draw_text(rect, note, 1)
                        end
    end
end
end
class Scene_Map < Scene_Base
alias create_all_windows_mapset create_all_windows
      def create_all_windows
                create_all_windows_mapset
                create_mapset_show_window
      end
      def create_mapset_show_window
    @mapset_show_window = Window_Mapset_Show.new
      end
      alias post_transfer_mapset post_transfer
def post_transfer
    post_transfer_mapset
                @mapset_show_window.open
end
      alias pre_transfer_mapset pre_transfer
def pre_transfer
    @mapset_show_window.close
    pre_transfer_mapset
end
end

然后用鼠标抽象的画了个图()
            本帖来自P1论坛作者chen12311,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=498520若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 搓了一个地图显示功能