Project1

标题: 图片显示优化 [打印本页]

作者: 黑米馒头    时间: 2022-10-4 18:22
标题: 图片显示优化
本帖最后由 黑米馒头 于 2022-10-4 18:42 编辑

工程里用到很多重复命名的图片,如何简化。。脚本盲看的头晕






RUBY 代码复制
  1. if @battler.startactive == "移动"
  2.   if Graphics.frame_count % 2 == 0
  3.     unless BattlerName[@battler.name].nil?
  4.       @number = (@number + 1) % BattlerName[@battler.name][@battler.startactive].size
  5.       self.bitmap = RPG::Cache.battler(BattlerName[@battler.name][@battler.startactive][@number], @battler_hue)
  6.     end
  7.   end
  8.  
  9. module Scene_BattleName
  10.   BattlerName = {
  11.   "泡泡-友" => {
  12.   "待机" => ["泡泡/友/待/1","泡泡/友/待/2","泡泡/友/待/3","泡泡/友/待/4","泡泡/友/待/5","泡泡/友/待/6","泡泡/友/待/7","泡泡/友/待/8","泡泡/友/待/9","泡泡/友/待/10","泡泡/友/待/11"],
  13.   "移动" => ["泡泡/友/移/1","泡泡/友/移/2","泡泡/友/移/3","泡泡/友/移/4","泡泡/友/移/5","泡泡/友/移/6","泡泡/友/移/7"]
  14.   },   
  15.   }  
  16. end
  17. class Scene_Battle
  18.   include Scene_BattleName
  19. end
  20. class Sprite_Battler
  21.   include Scene_BattleName
  22. end



RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_Head
  3. #------------------------------------------------------------------------------
  4. #  处理宠物图像画面的类。
  5. #==============================================================================
  6.  
  7. class Window_Head < Window_Base
  8.   def initialize(actor)
  9.     super(100, 42, 400, 390)
  10.     self.opacity = 0
  11.     self.z = 999
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     @bitmap_index = 0
  14.     @rect = Rect.new(0, 0, 1, 1)
  15.     refresh
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 刷新
  19.   #--------------------------------------------------------------------------
  20.   def refresh
  21.     self.contents.clear
  22.     actor = $baby_index
  23.     return if actor.nil? or Baby_Face[actor.name].nil?
  24.     if @id != actor.id or @face != actor.face
  25.       # 宠物图片类型设定
  26.       actor.face = "待机" or "移动" or "挨打" or "防御" if actor.face.nil?
  27.       @id = actor.id
  28.       @face = actor.face
  29.       @bitmap_index = 0
  30.       str = Baby_Face[actor.name][actor.face]
  31.       @index = [*str.split("-")[0].to_i..str.split("-")[1].to_i]
  32.     end
  33.     filename = sprintf("%d", @index[@bitmap_index])
  34.     # 宠物图片显示格式
  35.     bitmap = Bitmap.new("Graphics/Battlers/#{actor.name}/友/#{actor.face}/"+filename)
  36.     self.contents.blt(0, 0, bitmap, @rect.set(-30, -30, bitmap.width+100, bitmap.height))
  37.     self.x = 100
  38.     self.y = 42
  39.  
  40.     @bitmap_index += 1
  41.     if @bitmap_index >= @index.size
  42.       @bitmap_index = 0
  43.       # 宠物图片类型切换的时间
  44.       if rand(40) < 10
  45.         ar = Baby_Face[actor.name].keys
  46.         actor.face = ar[rand(ar.size)]
  47.       end
  48.     end
  49.   end
  50. end
  51.  
  52. #==============================================================================
  53. # ■ Scene_BattleName
  54. #------------------------------------------------------------------------------
  55. #  设置宠物图像画面的类。
  56. #==============================================================================
  57.  
  58. module Scene_BattleName
  59.  
  60.   Baby_Face = {
  61.  
  62.   "泡泡" => {
  63.   "待机" => "1-11",
  64.   "移动" => "1-7",
  65.   "挨打" => "1-2"
  66.   },   
  67.   }  
  68. end
  69.  
  70. #==============================================================================
  71. # ■ Window_Head
  72. #------------------------------------------------------------------------------
  73. #  处理宠物图像画面的类。
  74. #==============================================================================
  75.  
  76. class Window_Head < Window_Base
  77.   include Scene_BattleName
  78. end

作者: 我为鱼肉    时间: 2022-10-4 19:30
本帖最后由 我为鱼肉 于 2022-10-4 19:33 编辑

拆分为基本名+动作+帧数
比如说数据库中角色名字
泡泡@泡泡@待机帧数@移动帧数@攻击帧数@技能帧数@死亡帧数等等
第一个泡泡是召唤兽名字可以随便取,第二个泡泡是基本名或者说告诉程序用哪一套素材
角色初始化时把这些信息全部属性化




作者: guoxiaomi    时间: 2022-10-8 22:11
数据写在脚本里是这样子的,就这么点内容,个人感觉没必要改。
作者: enghao_lim    时间: 2022-10-11 01:06
就上楼上所说,有点没必要。如果要帮你,还得研究研究脚本,这太耗时了。当然,不研究脚本的方法也有,就是让BattlerName自动生成就好,举例:
  1. module Scene_BattleName
  2.   def genName
  3.       defi = {
  4.         "泡泡-友" => {
  5.           "待机" => ["泡泡/友/待/", 1..11],
  6.           "移动" => ["泡泡/友/移/", 1..7]
  7.         }
  8.       }
  9.      
  10.       list = {}
  11.       defi.each{|a,b| list[a] = {}; b.each{|c,d| list[a][c] = []; d[1].each{|i| list[a][c].push(d[0] + i.to_s) } } }
  12.      
  13.       return list
  14.     end
  15.   module_function:genName
  16.   BattlerName =  genName
  17. end
复制代码

懂了就懂,不懂就慢慢研究吧。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1