Project1
标题:
关于一个脚本结构如何优化的疑惑
[打印本页]
作者:
眠
时间:
2019-2-14 16:47
标题:
关于一个脚本结构如何优化的疑惑
遇到个有点微妙的疑问。
正在做一个arpg,实现了这样一个功能:
每次玩家遭受到攻击,都会获取攻击发出者的备注。
由此获知是被什么编号的敌人所攻击,然后进行一个对应的立绘变化的效果。
代码的部分大概是这样:
type = enemy.note #获取到敌人的种类。
if type == 1
(。。。)#对应立绘变化。
if type == 2
(。。。)
if type == 3
(。。。)
。。。
复制代码
开始没发现问题,但是后来内容越做越多,现在有40种变化。于是有了40个if。
这样每次攻击都执行一次40个if,觉得好像有点不妥。
所以想请教一下大家的经验,一般这种结构会怎么做?
觉得是个有点微妙的问题,但是有点短路。。m-_-m
作者:
灯笼菜刀王
时间:
2019-2-14 16:54
case when 嘛....
作者:
soulsaga
时间:
2019-2-14 17:18
本帖最后由 soulsaga 于 2019-2-14 17:48 编辑
不用IF..直接一行显示对应的立绘就行
显示立绘:"立绘名字"+type.to_s
作者:
KB.Driver
时间:
2019-2-14 17:22
三楼的是一个办法,不过即便是这样还是最好将方法与属性放在一个类中。
也就是为角色的类Game_Actor添加一个方法,将这个通过note获取立绘的语句塞进去。
不过在那内部可能还是避免不了这样的if判断。如果你专门把立绘和note联动的话,
就可以直接返回通用前缀+note.to_s这样
作者:
芯☆淡茹水
时间:
2019-2-14 17:44
可以专门写一个 module 方法来获取LOGO名,方便管理,又好修改。
比如
module XXX
Data = ["泛用敌人攻击图片","类型1敌人攻击图片","类型2敌人攻击图片",
"类型3敌人攻击图片",,,]
def self.get_logo_name(note)
return Data[note || 0]
end
end
获取直接 XXX.get_logo_name(note) 代入参数 note 就行了。
要修改获取的方式,只需要修改 module 方法,就不用在获取的地方改了。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1