复制代码
- class Game_Event
- def update
- super
- verifydeath #判断死亡的方法
- # 自动启动事件判定
- check_event_trigger_auto
- # 并行处理有效的情况下
- if @interpreter != nil
- # 不在执行中的场合的情况下
- unless @interpreter.running?
- # 设置事件
- @interpreter.setup(@list, @event.id)
- end
- # 更新解释器
- @interpreter.update
- end
- end
- end
如果只有一个插件要在Game_Event的update里添加内容的话,这种方法也是可以的。可是这明显很鸡肋
解决方法C:alias大法
给原来的update取别名叫new_update,new_update就包括原来update里的内容,再在新定义的update里加上new_update,这样在执行新定义update的时候原来的update的内容也可以执行了复制代码
- class Game_Event
- alias new_update update
- def update
- new_update
- verifydeath #判定死亡的方法
- end
- end
说白了使用alias可以达成的效果是:在不改动原始脚本库的条件下,向原脚本库里的某个方法里添加内容
作者: 灯笼菜刀王 时间: 2018-6-18 10:16
本帖最后由 灯笼菜刀王 于 2018-6-18 10:20 编辑
因为如果直接def, 那就是后来者居上, 同样的方法, 后面的脚本会覆盖掉前面的, 一些热门地盘十分紧俏, 那就相当于用到这些热门地盘的插件就只能选择一个使用了, 你不会纠结么
但是用了alias就不一样,它相当于在热门地盘贴一块自己的专属方法上去, 不影响原本的方法, 这样,大家就不用抢地盘了,需要在原来的方法上加上自己的东西,就alias贴一块上去, 各自用各自的专属地盘。这样不是很和谐了么~
除非撞大运碰到两个重定义还是用一样的名字(你们可以结婚去了)
但是alias 多了不利于脚本修改和除错,所以如果自己用的话,还是直接整合到一个def里比较好。
作者: shitake 时间: 2018-6-18 19:14
单独的 alias 从来都没有防止冲突的意思
作者: fux2 时间: 2018-6-19 10:55
一种可以调用现同名方法的手段,也算是避免和其他部分脚本产生冲突吧。
作者: 茶沫茶沫 时间: 2018-6-19 18:16
真·可乐 发表于 2018-6-18 09:25
我做一个ARPG游戏, 我想在Game_Event的update里添加判定死亡的方法,当HP为0时则判定死亡
直接新建一个脚 ...
好像懂了!谢谢!
作者: 茶沫茶沫 时间: 2018-6-19 18:17
灯笼菜刀王 发表于 2018-6-18 10:16
因为如果直接def, 那就是后来者居上, 同样的方法, 后面的脚本会覆盖掉前面的, 一些热门地盘十分紧俏, 那就 ...
好的谢谢大佬!
作者: 茶沫茶沫 时间: 2018-6-19 18:18
fux2 发表于 2018-6-19 10:55
一种可以调用现同名方法的手段,也算是避免和其他部分脚本产生冲突吧。
SOGA!
欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1