Project1
标题: 为何我的module会出现问题 [打印本页]
作者: timiesea 时间: 2014-1-12 02:30
标题: 为何我的module会出现问题
本帖最后由 timiesea 于 2014-1-12 14:21 编辑
我定义了一个module,如下:
module GOLD_COLOR2
Color1 = Color.new(255, 255, 255) # 白
Color2 = Color.new(128, 255, 128) # 绿
Color3 = Color.new(128, 128, 255) # 蓝
Color4 = Color.new(255, 0, 255) # 紫
Color5 = Color.new(255, 128, 128) # 红
Color6 = Color.new(255, 128, 0) # 橙
selfColor= Array.new([Color1,Color2,Color3,Color4,Color5,Color6]);
end
module GOLD_COLOR2
Color1 = Color.new(255, 255, 255) # 白
Color2 = Color.new(128, 255, 128) # 绿
Color3 = Color.new(128, 128, 255) # 蓝
Color4 = Color.new(255, 0, 255) # 紫
Color5 = Color.new(255, 128, 128) # 红
Color6 = Color.new(255, 128, 0) # 橙
selfColor= Array.new([Color1,Color2,Color3,Color4,Color5,Color6]);
end
在调用时我也写了如下脚本:
GOLD_COLOR2::selfColor[1]
GOLD_COLOR2::selfColor[1]
但是我在运行游戏的时候总是提示selfColor未定义(已经验证GOLD_COLOR2::Color1也会提示未定义)。我看系统默认的module也有这么类似的写法,例如:module Vocab
为何module Vocab不会提示而我的就会提示呢?
很遗憾,在F1中,module的介绍一笔带过。而网络上似乎都没有涉及到这个问题,大家如果知道原因的请赐教。
在[PSO]物品颜色描绘的脚本中,module进行了嵌套,不过在module脚本之前还有一段奇怪的脚本,我不知道是不是跟这个有关系:
$_PS0 = {} if $_PS0 == nil
$_PS0["Window_Base_Itemcolor"] = 20111227
$_PS0 = {} if $_PS0 == nil
$_PS0["Window_Base_Itemcolor"] = 20111227
作者: rmav 时间: 2014-1-12 09:23
本帖最后由 rmav 于 2014-1-12 09:30 编辑
这是ruby语法的问题,能看出区别吧
#encoding:utf-8
module GOLD_COLOR2
Color1 = Color.new(255, 255, 255) # 白
Color2 = Color.new(128, 255, 128) # 绿
Color3 = Color.new(128, 128, 255) # 蓝
Color4 = Color.new(255, 0, 255) # 紫
Color5 = Color.new(255, 128, 128) # 红
Color6 = Color.new(255, 128, 0) # 橙
SelfColor= Array.new([Color1,Color2,Color3,Color4,Color5,Color6]);
end
msgbox GOLD_COLOR2::SelfColor.inspect
msgbox GOLD_COLOR2::Color1.inspect
#encoding:utf-8
module GOLD_COLOR2
Color1 = Color.new(255, 255, 255) # 白
Color2 = Color.new(128, 255, 128) # 绿
Color3 = Color.new(128, 128, 255) # 蓝
Color4 = Color.new(255, 0, 255) # 紫
Color5 = Color.new(255, 128, 128) # 红
Color6 = Color.new(255, 128, 0) # 橙
SelfColor= Array.new([Color1,Color2,Color3,Color4,Color5,Color6]);
end
msgbox GOLD_COLOR2::SelfColor.inspect
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里面~
其他的请全部用大写~
比如这样:- module GOLD_COLOR2
- COLOR1 = Color.new(2,2,2)
- end
复制代码 然后调用的时候:这样应该可以了~
然后PSO的脚本那个目测只是个版本号~
对脚本运行没什么影响的。
作者: rmav 时间: 2014-1-12 17:39
本帖最后由 rmav 于 2014-1-12 17:42 编辑
不是分号出错哦,是selfColor要大写开头,果然不容易发现。
分号只是表示一行结束
ruby各种变量的命名规范还是要注意下的。
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |