Project1

标题: 为何我的module会出现问题 [打印本页]

作者: timiesea    时间: 2014-1-12 02:30
标题: 为何我的module会出现问题
本帖最后由 timiesea 于 2014-1-12 14:21 编辑

我定义了一个module,如下:
RUBY 代码复制
  1. module GOLD_COLOR2
  2.     Color1 = Color.new(255, 255, 255)  # 白
  3.     Color2 = Color.new(128, 255, 128)  # 绿
  4.     Color3 = Color.new(128, 128, 255)  # 蓝
  5.     Color4 = Color.new(255, 0, 255)    # 紫
  6.     Color5 = Color.new(255, 128, 128)  # 红
  7.     Color6 = Color.new(255, 128, 0)    # 橙
  8.    selfColor= Array.new([Color1,Color2,Color3,Color4,Color5,Color6]);
  9. end


在调用时我也写了如下脚本:
RUBY 代码复制
  1. GOLD_COLOR2::selfColor[1]


但是我在运行游戏的时候总是提示selfColor未定义(已经验证GOLD_COLOR2::Color1也会提示未定义)。我看系统默认的module也有这么类似的写法,例如:module Vocab

为何module Vocab不会提示而我的就会提示呢?

很遗憾,在F1中,module的介绍一笔带过。而网络上似乎都没有涉及到这个问题,大家如果知道原因的请赐教。

在[PSO]物品颜色描绘的脚本中,module进行了嵌套,不过在module脚本之前还有一段奇怪的脚本,我不知道是不是跟这个有关系:
RUBY 代码复制
  1. $_PS0 = {} if $_PS0 == nil  
  2. $_PS0["Window_Base_Itemcolor"] = 20111227

作者: rmav    时间: 2014-1-12 09:23
本帖最后由 rmav 于 2014-1-12 09:30 编辑

这是ruby语法的问题,能看出区别吧
RUBY 代码复制
  1. #encoding:utf-8
  2.   module GOLD_COLOR2
  3.       Color1 = Color.new(255, 255, 255)  # 白
  4.       Color2 = Color.new(128, 255, 128)  # 绿
  5.       Color3 = Color.new(128, 128, 255)  # 蓝
  6.       Color4 = Color.new(255, 0, 255)    # 紫
  7.       Color5 = Color.new(255, 128, 128)  # 红
  8.       Color6 = Color.new(255, 128, 0)    # 橙
  9.      SelfColor= Array.new([Color1,Color2,Color3,Color4,Color5,Color6]);
  10.    end
  11.  
  12.    msgbox GOLD_COLOR2::SelfColor.inspect
  13.    msgbox GOLD_COLOR2::Color1.inspect


那个 SelfColor= Array.new([Color1,Color2,Color3,Color4,Color5,Color6]);为什么要这样?
直接 SelfColor=[Color1,Color2,Color3,Color4,Color5,Color6]就行吧
作者: cinderelmini    时间: 2014-1-12 09:26
module里面的话~
除非class或者def里面~
其他的请全部用大写~
比如这样:
  1. module GOLD_COLOR2
  2.   COLOR1 = Color.new(2,2,2)
  3. end
复制代码
然后调用的时候:
  1. GOLD_COLOR2::COLOR1
复制代码
这样应该可以了~

然后PSO的脚本那个目测只是个版本号~
对脚本运行没什么影响的。
作者: rmav    时间: 2014-1-12 17:39
本帖最后由 rmav 于 2014-1-12 17:42 编辑

不是分号出错哦,是selfColor要大写开头,果然不容易发现。
分号只是表示一行结束

ruby各种变量的命名规范还是要注意下的。





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