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

Project1

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

[已经解决] 为何我的module会出现问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
105
在线时间
297 小时
注册时间
2009-1-7
帖子
216
跳转到指定楼层
1
发表于 2014-1-12 02:30:28 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 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
游戏群组:https://rpg.blue/forum.php?mod=group&fid=565在这里你可以看到我在制作游戏过程中分享的内容。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
103 小时
注册时间
2013-12-12
帖子
200
4
发表于 2014-1-12 17:39:34 | 只看该作者
本帖最后由 rmav 于 2014-1-12 17:42 编辑

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

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

点评

不客气哈^_^*  发表于 2014-1-14 20:51
受教了!  发表于 2014-1-12 19:16
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

3
发表于 2014-1-12 09:26:46 | 只看该作者
module里面的话~
除非class或者def里面~
其他的请全部用大写~
比如这样:
  1. module GOLD_COLOR2
  2.   COLOR1 = Color.new(2,2,2)
  3. end
复制代码
然后调用的时候:
  1. GOLD_COLOR2::COLOR1
复制代码
这样应该可以了~

然后PSO的脚本那个目测只是个版本号~
对脚本运行没什么影响的。

点评

事实证明,首字母大写就可以啦。多谢啦!这个细节我还真没注意!  发表于 2014-1-12 14:20
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
103 小时
注册时间
2013-12-12
帖子
200
2
发表于 2014-1-12 09:23:57 | 只看该作者
本帖最后由 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]就行吧

点评

其实最后的那个分号是出错的关键吧。。。  发表于 2014-1-12 16:52
我看你是没看出这段代码与你上面代码的区别在何处吧。 这段代码是测试过正常的。你上面的代码是不正常的。  发表于 2014-1-12 15:50
之前我也是像你推荐的那么写的,但还是不行,所以换了个定义的方式。  发表于 2014-1-12 14:21
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 00:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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