Project1

标题: 请问下Nomethoderror报错怎么解决 [打印本页]

作者: taeckle    时间: 2019-10-17 22:56
标题: 请问下Nomethoderror报错怎么解决
本帖最后由 taeckle 于 2019-10-17 23:04 编辑

提示内容为:

“undefined method state?” for nil: Nilclass



请问下这个报错该怎么解决啊?

nomethodeerror.PNG (9.55 KB, 下载次数: 29)

nomethodeerror.PNG

作者: soulsaga    时间: 2019-10-17 23:09
发402行前后的脚本..
作者: taeckle    时间: 2019-10-18 07:11
soulsaga 发表于 2019-10-17 23:09
发402行前后的脚本..

先提个问题:
在类Class A 里的一个方法里(比如这个方法叫abc)“@xyz"被赋予一个值,我想在Class B 里的一个方法里引用这个@xyz的赋值该怎么引用啊?
作者: miantouchi    时间: 2019-10-18 08:07
我打个比方吧,比如你在Sprite_Battler里面会调用,在Scene_Battle里面某个位置想调用,你把问题关键点写出来,估计能有人帮你解决的。
你这种举例有点笼统了,你说呢。
作者: soulsaga    时间: 2019-10-18 10:04
taeckle 发表于 2019-10-18 07:11
先提个问题:
在类Class A 里的一个方法里(比如这个方法叫abc)“@xyz"被赋予一个值,我想在Class B 里的 ...

class A
  def abc
    a=222
    return a
  end
end

在Class B
这样写就可以调用Class A的方法
@kkk=A.new
    p @kkk.abc
作者: 寒凌天    时间: 2019-10-18 15:59
本帖最后由 寒凌天 于 2019-10-18 16:27 编辑
taeckle 发表于 2019-10-18 07:11
先提个问题:
在类Class A 里的一个方法里(比如这个方法叫abc)“@xyz"被赋予一个值,我想在Class B 里的 ...


在@xyz被赋值时,下面加一行代码$game_variables[9527]=@xyz
然后在Class B里,调用$game_variables[9527]的值就行了

这个9527,其实就是代表着变量9527,这个数字你也可以换成未使用的变量,由于这变量本身是全局性的,所以你在哪里调用都可以。

编辑补充说明一下,我的方法和5楼的方法,是两种截然不同的代码,针对的情况也是截然不同的。

5楼的代码意思是重新声明一个类,并按照方法返回值。
而我的代码也是是,读取上次执行Class A的abc命令时,所产生的值。

不过像你这种获取某个值的方法,Class A的abc多数情况是有参数的,参数不同,返回结果一般也不同。是用我的代码“读取上次结果”,还是用5楼说的那种在Class B中重新执行一次Class A的abc方法,你看着选吧。
两种代码没有谁对谁错之分,也没有哪个更好一说,因为应对的是完全两种不同的情况。因为你之前没说清楚你具体想用在哪种情况,所以你看着选吧

作者: taeckle    时间: 2019-10-18 21:47
soulsaga 发表于 2019-10-18 10:04
class A
  def abc
    a=222

大神请问下这两句话:
if ($game_variables[100]+$game_variables[101]) >= 9999

end

if $game_variables[100]+$game_variables[101] >= 9999

end
是不是一样的?加不加括号无所谓?
作者: soulsaga    时间: 2019-10-18 22:29
taeckle 发表于 2019-10-18 21:47
大神请问下这两句话:
if ($game_variables[100]+$game_variables[101]) >= 9999


加括号用来优先计算..不需要就不用加..
作者: taeckle    时间: 2019-10-19 09:41
soulsaga 发表于 2019-10-18 22:29
加括号用来优先计算..不需要就不用加..

大神你看这句:
     if @active_battler.id == 229 or @active_battler.id == 231  or @active_battler.id == 985
     end

咱要是用"include"可不可以这么写:
if [229,231,985].include?(@active_battler.id)
end

这么写语法对嘛?
作者: soulsaga    时间: 2019-10-19 10:38
taeckle 发表于 2019-10-19 09:41
大神你看这句:
     if @active_battler.id == 229 or @active_battler.id == 231  or @active_battler. ...

可以这么写...
作者: 127521    时间: 2021-9-12 09:29
soulsaga 发表于 2019-10-18 10:04
class A
  def abc
    a=222

大佬,如果我是做捉宠脚本,把第4号角色直接调用敌方的内容,怎么在game atctor里调用game enemy里的def name
@name = $data_enemies[$game_variables[590]].name 这句老是说name是nilclass,特别是在战斗中用道具时,590号变量是捉的怪的id,就是要把4号id角色的名字替换成这个id的怪的名字
作者: soulsaga    时间: 2021-9-12 10:25
127521 发表于 2021-9-12 09:29
大佬,如果我是做捉宠脚本,把第4号角色直接调用敌方的内容,怎么在game atctor里调用game enemy里的def  ...

你脚本写在哪里?




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