Project1

标题: 关于NoMethodError,求教(4L已给出解) [打印本页]

作者: CatNDice    时间: 2012-10-3 22:51
标题: 关于NoMethodError,求教(4L已给出解)
本帖最后由 CatNDice 于 2012-10-4 21:26 编辑

几个小时前刚上手RMVX,不知道怎么逐行调试代码,只好来求教各位……
我正在针对RMVX默认提供的脚本进行修改
在游戏的起始页面初始化过程中,有一个语句$game_party = Game_Party.new
我在该语句之后修改了party的起始金钱,语句如下:
$game_party.gold = 12
则在测试时报错:
发生了NoMethodError
undifined method 'gold=' for #<Game_Party:地址>
为什么''中的内容会是gold=而非gold呢?我参考了其它引用类属性的方法,貌似没出错吧……

而且为什么会把$game_party.gold = 12这个语句理解为类方法而非为类属性赋值呢……


作者: CatNDice    时间: 2012-10-3 23:09
认真的重新看了下F1……然后发现貌似在RGSS中类中的数据应该被成为实变量……但此外貌似我没犯什么错误呀……
  1. class Person
  2.   def name
  3.     return @name
  4.   end
  5.   def name=(name)
  6.     @name = name
  7.   end
  8.   def hello
  9.     print "我是" + @name
  10.   end
  11. end
  12. alex = Person.new
  13. alex.name = "阿莱库斯"
  14. alex.hello                  # => 我是阿莱库斯
复制代码
以上代码来自帮助文档 其中更改类中实变量就是用的“实例名.实变量名 = 值”的方法额……

顺便贴下代码……
  1. #--------------------------------------------------------------------------
  2.   # * 創建遊戲物件
  3.   #--------------------------------------------------------------------------
  4.   def create_game_objects
  5.     $game_temp          = Game_Temp.new
  6.     $game_message       = Game_Message.new
  7.     $game_system        = Game_System.new
  8.     $game_switches      = Game_Switches.new
  9.     $game_variables     = Game_Variables.new
  10.     $game_self_switches = Game_SelfSwitches.new
  11.     $game_actors        = Game_Actors.new
  12.     $game_party         = Game_Party.new
  13.     $game_party.gold    = 12
  14.     $game_troop         = Game_Troop.new
  15.     $game_map           = Game_Map.new
  16.     $game_player        = Game_Player.new
  17.   end
复制代码
以上代码来自新工程自带代码的Scene_Title类的create_game_objects方法,我只增加了$game_party.gold    = 12这一句
作者: 八宝粥先生    时间: 2012-10-4 08:19
虽...虽然我看不懂你的长篇大论是什么意思,
但我清楚地记得增加金钱是
  1. $game_party.gain_gold(A) #A为整数
复制代码
呀......

作者: R-零    时间: 2012-10-4 09:04
本帖最后由 R-零 于 2012-10-4 09:22 编辑

Game_Party 15行 改
  1. attr_accessor :gold
复制代码
因为原来的attr_reader是只读的

自己探究问题 85
@CatNDice
作者: Password    时间: 2012-10-4 11:34
我只知道一个等号是赋值,俩等号是等于……虽然我也不知道在说什么……
不过要修改初始金钱在游戏一开始的时候自动执行一个增加金钱事件不就得了……
作者: CatNDice    时间: 2012-10-4 21:21
R-零 发表于 2012-10-4 09:04
Game_Party 15行 改因为原来的attr_reader是只读的

自己探究问题 85分

谢谢……没找到关于attr_reader的说明 可能我没仔细看文档……
顺便……发言和头像很般配嘛~


‘‘──CatNDice于2012-10-4 21:22补充以下内容:

以及,貌似@什么人 似乎没啥反应?反正我这里没有任何提醒……包括被回复也是……
不过也有可能只是网速问题……
’’
作者: CatNDice    时间: 2012-10-4 21:25
Password 发表于 2012-10-4 11:34
我只知道一个等号是赋值,俩等号是等于……虽然我也不知道在说什么……
不过要修改初始金钱在游戏一开始的 ...

其实我在做的功能是修改起始队伍成员的职业,也就是在NewGame选项后添加一个职业选单,但是遇到了上述错误……修改金钱什么的完全是为了调试方便 && 问题容易表述而已……
毫无VX基础的某人表示不能逐行调试的代码写起来略吃力……
(是不能逐行调试吧……嗯嗯)





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