设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 6789|回复: 15

[已经解决] 请问下Nomethoderror报错怎么解决

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
发表于 2019-10-17 22:56:38 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 taeckle 于 2019-10-17 23:04 编辑

提示内容为:

“undefined method state?” for nil: Nilclass



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

Lv5.捕梦者

梦石
0
星屑
33043
在线时间
10470 小时
注册时间
2009-3-15
帖子
4756
发表于 2019-10-17 23:09:33 | 显示全部楼层
发402行前后的脚本..
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2019-10-18 07:11:04 | 显示全部楼层
soulsaga 发表于 2019-10-17 23:09
发402行前后的脚本..

先提个问题:
在类Class A 里的一个方法里(比如这个方法叫abc)“@xyz"被赋予一个值,我想在Class B 里的一个方法里引用这个@xyz的赋值该怎么引用啊?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14051
在线时间
2135 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

发表于 2019-10-18 08:07:13 | 显示全部楼层
我打个比方吧,比如你在Sprite_Battler里面会调用,在Scene_Battle里面某个位置想调用,你把问题关键点写出来,估计能有人帮你解决的。
你这种举例有点笼统了,你说呢。

评分

参与人数 1+1 收起 理由
taeckle + 1 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33043
在线时间
10470 小时
注册时间
2009-3-15
帖子
4756
发表于 2019-10-18 10:04:42 | 显示全部楼层
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

评分

参与人数 1+1 收起 理由
taeckle + 1 大神威武,无坚不摧!

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3072
在线时间
205 小时
注册时间
2019-9-16
帖子
224
发表于 2019-10-18 15:59:23 | 显示全部楼层
本帖最后由 寒凌天 于 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方法,你看着选吧。
两种代码没有谁对谁错之分,也没有哪个更好一说,因为应对的是完全两种不同的情况。因为你之前没说清楚你具体想用在哪种情况,所以你看着选吧

点评

有道理,多谢了!  发表于 2019-10-18 21:07

评分

参与人数 2星屑 +70 +1 收起 理由
RyanBern + 70 认可答案
taeckle + 1 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2019-10-18 21:47:16 | 显示全部楼层
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
是不是一样的?加不加括号无所谓?

点评

OK!明白了!  发表于 2019-10-19 00:40
括号多用于有乘除法的运算时,和上学的时候学的普通数学是一样的,先算括号内的。你距离这个例子加不加括号都一样,因为没有乘除法  发表于 2019-10-18 23:57
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33043
在线时间
10470 小时
注册时间
2009-3-15
帖子
4756
发表于 2019-10-18 22:29:54 | 显示全部楼层
taeckle 发表于 2019-10-18 21:47
大神请问下这两句话:
if ($game_variables[100]+$game_variables[101]) >= 9999


加括号用来优先计算..不需要就不用加..

评分

参与人数 1+1 收起 理由
taeckle + 1 Ok!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2019-10-19 09:41:49 | 显示全部楼层
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

这么写语法对嘛?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33043
在线时间
10470 小时
注册时间
2009-3-15
帖子
4756
发表于 2019-10-19 10:38:17 | 显示全部楼层
taeckle 发表于 2019-10-19 09:41
大神你看这句:
     if @active_battler.id == 229 or @active_battler.id == 231  or @active_battler. ...

可以这么写...

评分

参与人数 1+1 收起 理由
taeckle + 1 这居然是我两年前的问题...

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-3-29 20:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表