Project1
标题:
如何让将状态界面经验绘制改成绘制状态图标?
[打印本页]
作者:
三途亚梦
时间:
2014-8-22 11:41
标题:
如何让将状态界面经验绘制改成绘制状态图标?
我在游戏中不会运用到经验和等级,所以打算删除掉这个栏目。
同时想要将人物当前状态的图标描绘到这个区域去,
最好是一排绘制4 - 5个图标
可以绘制最多4排。
作者:
喵呜喵5
时间:
2014-8-22 12:18
状态界面的脚本是 Window_Status
其中绘制经验值和基本状态都在这个方法中
def draw_block2(y)
draw_actor_face(@actor, 8, y)
draw_basic_info(136, y) # 绘制人物基本信息(包括状态图标)
draw_exp_info(304, y) # 绘制经验值
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中添加这样的方法:
def draw_actor_icons(actor, x, y, width = 96)
icons = (actor.state_icons + actor.buff_icons)[0, width / 24]
icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y) }
end
复制代码
由于一个图标的宽度是24,所以width / 24可以计算在给定的宽度中一排能够描绘多少个图标,依照这种写法,要描绘三排的图标就是……
def draw_actor_icons(actor, x, y, width = 96)
icons = (actor.state_icons + actor.buff_icons)[width*0 / 24, width / 24]
icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24*0) }
icons = (actor.state_icons + actor.buff_icons)[width*1 / 24, width / 24]
return unless icons
icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24*1) }
icons = (actor.state_icons + actor.buff_icons)[width*2 / 24, width / 24]
return unless icons
icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24*2) }
end
复制代码
简化的写法就变成这样
def draw_actor_icons(actor, x, y, width = 96, col = 1)
col.times do |line|
icons = (actor.state_icons + actor.buff_icons)[width * line / 24, width / 24]
return unless icons
icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24 * line) }
end
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