Project1

标题: 类的继承问题 [打印本页]

作者: 136667    时间: 2014-8-17 10:56
标题: 类的继承问题
我在Game_Battler中添加了一个属性mx,并在初始化对象的时候将@mx赋值为0,为什么在Game_Actor中的值还是为nil呢?而在Game_Enemy中的值为0,这是怎么回事呢?
作者: myownroc    时间: 2014-8-17 11:05
经测试,未发现楼主所说的问题
作者: 136667    时间: 2014-8-17 11:17
myownroc 发表于 2014-8-17 11:05
经测试,未发现楼主所说的问题

我用新工程测试也没问题,可是我的工程已经修改了好多,我也不知道到底是哪一部分出现了问题,请问有哪些可能会导致变量变为了nil呢?
作者: RyanBern    时间: 2014-8-17 11:47
可能出现此问题的原因:
1.initialize被反复定义,导致有些实变量没有被初始化。
解决方法:利用alias进行别名处理,或者搜索所有initialize的定义,进行修改即可。
2.在进行游戏当中,如果利用了之前未加入新属性的Game_Battler定义生成了一个Game_Actor对象,那么在追加属性后,依然用之前生成的这个对象,那么新属性的值为nil。Game_Enemy对象由于不是保存的而是实时生成的,因此不会出现问题,但是Game_Actor对象要保存在存档中,所以新属性的值不予以初始化。
解决方法:放弃存档重新开一个新游戏。或者在需要访问新属性的地方,加一句@mx = 0 if @mx == nil进行临时初始化即可。
作者: myownroc    时间: 2014-8-17 11:48
136667 发表于 2014-8-17 11:17
我用新工程测试也没问题,可是我的工程已经修改了好多,我也不知道到底是哪一部分出现了问题,请问有哪些 ...

建议上传工程
作者: 136667    时间: 2014-8-17 11:54
RyanBern 发表于 2014-8-17 11:47
可能出现此问题的原因:
1.initialize被反复定义,导致有些实变量没有被初始化。
解决方法:利用alias进行 ...

十分感谢,已经解决了,确实是存档的问题,重开之后就没有这样的问题了。




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