Project1

标题: 如何让将状态界面经验绘制改成绘制状态图标? [打印本页]

作者: 三途亚梦    时间: 2014-8-22 11:41
标题: 如何让将状态界面经验绘制改成绘制状态图标?
我在游戏中不会运用到经验和等级,所以打算删除掉这个栏目。
同时想要将人物当前状态的图标描绘到这个区域去,
最好是一排绘制4 - 5个图标
可以绘制最多4排。
作者: 喵呜喵5    时间: 2014-8-22 12:18
状态界面的脚本是 Window_Status
其中绘制经验值和基本状态都在这个方法中
  1.   def draw_block2(y)
  2.     draw_actor_face(@actor, 8, y)
  3.     draw_basic_info(136, y) # 绘制人物基本信息(包括状态图标)
  4.     draw_exp_info(304, y) # 绘制经验值
  5.   end
复制代码
绘制状态图标的方法是draw_basic_info(x, y)方法中的draw_actor_icons(@actor, x, y + line_height * 1)方法
作者: 喵呜喵5    时间: 2014-8-22 12:25
本帖最后由 喵呜喵5 于 2014-8-22 15:02 编辑

以下内容未测试:
如果希望图标分成好多排的话,可以参考Window_Base中绘制图表的方法在Window_Status中添加这样的方法:
  1.   def draw_actor_icons(actor, x, y, width = 96)
  2.     icons = (actor.state_icons + actor.buff_icons)[0, width / 24]
  3.     icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y) }
  4.   end
复制代码
由于一个图标的宽度是24,所以width / 24可以计算在给定的宽度中一排能够描绘多少个图标,依照这种写法,要描绘三排的图标就是……
  1.   def draw_actor_icons(actor, x, y, width = 96)
  2.     icons = (actor.state_icons + actor.buff_icons)[width*0 / 24, width / 24]
  3.     icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24*0) }
  4.     icons = (actor.state_icons + actor.buff_icons)[width*1 / 24, width / 24]
  5.     return unless icons
  6.     icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24*1) }
  7.     icons = (actor.state_icons + actor.buff_icons)[width*2 / 24, width / 24]
  8.     return unless icons
  9.     icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24*2) }
  10.   end
复制代码
简化的写法就变成这样
  1.   def draw_actor_icons(actor, x, y, width = 96, col = 1)
  2.     col.times do |line|
  3.       icons = (actor.state_icons + actor.buff_icons)[width * line / 24, width / 24]
  4.       return unless icons
  5.       icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24 * line) }
  6.     end
  7.   end
复制代码
之后调用draw_actor_icons方法时最后一个参数设定成总行数就好了
作者: 三途亚梦    时间: 2014-8-22 13:26
喵呜喵5 发表于 2014-8-22 12:25
以下内容未测试:
如果希望图标分成好多排的话,可以参考Window_Base中绘制图表的方法在Window_Status中添 ...

十分感谢~  解决啦,可以结贴了~




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