本帖最后由 百里_飞柳 于 2018-6-17 00:36 编辑 Game_BaseItem类只是一个对于$data_items $data_weapons等的一个封装,为了能够进行统一调用的容器类而已 如果你想将它们整合为使用 Game_BaseItem类的对象,可以在方法 .object = 赋值前加上 @equips[slot_id] = Game_BaseItem.new if @equips[slot_id].nil? 这样就先弄了一个空的容器类占位置 不过据我对于默认脚本的研究,@equips应该真的是单纯存的$data_weapons[id]或$data_armors[id],毕竟nil代表这里是空的没装备(在window里绘制时判定了这个nil) 比如 [ $data_weapons[1], nil, nil, $data_armors[1], $data_armors[2] ] |
头痛医头,脚痛治脚: 请配着这个教程食用 https://rpg.blue/forum.php?mod=viewthread&tid=399513 undefined method XXX for YYY class 意思就是调用方法时(YYY类的实例.XXX方法),YYY类并没有定义XXX方法。 在这里,YYY是nil。就是空值。什么情况之下会出空值呢? 其中一个就是数组里并没有这个索引的数值。(例子:array长度3,但是你却尝试array[5]) 请检查你的代码运行顺序,确保Game_Actor内force_change_equip方法的第一行 @equips[slot_id].object = item 从@equips提取出来的值不是nil(空值)。 也建议你在这种情况的时候加一个p(需要开启控制台/小黑窗)来检查数据。 例子: RUBY 代码复制
上面的检查,如果确实slot_id比@equips的大小还大,你是需要对@equips数组下手了。 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2025-7-17 16:23
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.