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

Project1

 找回密码
 注册会员
搜索
查看: 1918|回复: 4
打印 上一主题 下一主题

[已经解决] "undefined method `+' for nil:NilClass" 是怎么回事?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2013-12-14
帖子
17
跳转到指定楼层
1
发表于 2014-1-1 16:34:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 jediman 于 2014-1-1 19:21 编辑

更改代码如下


RUBY 代码复制
  1. def param(param_id)
  2. #    value = param_base(param_id) + param_plus(param_id)                #原代码
  3. #    value *= param_rate(param_id) * param_buff_rate(param_id)         #原代码
  4. #    [[value, param_max(param_id)].min, param_min(param_id)].max.to_i             #原代码
  5.  
  6.     value = get_status(param_id) + param_plus(param_id)
  7.     value *= get_status(param_id) * param_buff_rate(param_id)
  8. #    [[value, get_status(param_id)].min, param_min(param_id)].max.to_i
  9.   end
  10.   def get_status(param_id)    #获取全局变量并返回
  11.     get_status = $Game_Bstatus[param_id]   #已初始化
  12. #    msgbox get_status
  13.     return get_status
  14.   end


测试时报错:




为什么呢? 求大神指点

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-1-1 17:13:40 | 只看该作者
本帖最后由 taroxd 于 2014-1-1 17:23 编辑

    get_status = $Game_Bstatus[param_id]   #已初始化
这一行,对每个param_id都初始化了吗?nil可不算啊,至少也初始化成0

顺便给个下下策:
RUBY 代码复制
  1. class NilClass
  2.   def +(other)
  3.     other
  4.   end
  5. end


再来一句题外话,value *= get_status(param_id) * param_buff_rate(param_id) 这句话莫名其妙啊,为什么要再乘一次get_status(param_id) ?
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
发表于 2014-1-1 17:17:34 | 只看该作者
在 value =XXXX 前面加一句msgbox get_status(param_id)看看传回去的时候是不是nil?

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2013-12-14
帖子
17
4
 楼主| 发表于 2014-1-1 19:18:09 | 只看该作者
taroxd 发表于 2014-1-1 17:13
get_status = $Game_Bstatus   #已初始化
这一行,对每个param_id都初始化了吗?nil可不算啊,至少也初 ...

最后那句是根据源代码进行修改的,意思应该是增加BUFF的属性值。。至于为什么要再乘一次get_status(param_id)
原因只有一个。。我看错了{:2_274:}。。

看到 你说 nil 不可算。。突然见想到参数 param_id 超出数组长度导致回传值为nil
修改数组长度后问题解决~谢谢~
顺便预祝新年快乐!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2013-12-14
帖子
17
5
 楼主| 发表于 2014-1-1 19:20:29 | 只看该作者
喵呜喵5 发表于 2014-1-1 17:17
在 value =XXXX 前面加一句msgbox get_status(param_id)看看传回去的时候是不是nil?

发现问题是函数参数超出数组长度导致 回传值为nil
问题已经解决了~
谢谢关注,祝新年快乐
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 05:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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