Project1

标题: 关于游戏内置的全局变量$game_variables [打印本页]

作者: 茶沫茶沫    时间: 2018-6-13 14:37
标题: 关于游戏内置的全局变量$game_variables
为了尝试一些新功能,我使用了下列语句:
for i in 0..($game_variables.size-1)
  $chamo_variables[i] = $game_variables[i]
end
照理说$game_variables要么是HASH要么是ARRAY,但是竟然会跳错说.size方法未定义,请问这是为什么呢?
作者: RaidenInfinity    时间: 2018-6-13 14:52
RPG Maker VX Ace 的 $game_variables 存的不是数组更不是哈希表。它是一个类,名叫Game_Variables。
这个类存在的主要意义是拓展数组,提供默认值的功能。(原本只有哈希表有)
真正的公共变量数组存在Game_Variables类的@data实例变量里面。

那么怎么获取实例变量呢?两个方法。
一个是给Game_Variables类新增一个名叫size的方法,返回@data.size。
另一个是使用黑科技方法instance_variable_get。用法请参考置顶的RGSS3教程,章节2.8。

另外我得吐槽for的使用。
for i in 0..(size-1)
可以简化成
size.times do |i|
Ruby有很多种迭代的写法。详细信息请参考置顶教程的章节1.5。
作者: 茶沫茶沫    时间: 2018-6-18 00:30
RaidenInfinity 发表于 2018-6-13 14:52
RPG Maker VX Ace 的 $game_variables 存的不是数组更不是哈希表。它是一个类,名叫Game_Variables。
这个 ...

谢谢大佬!我去看看!
作者: 织梦行云    时间: 2019-10-24 20:17
不会ruby,MV新支持的JS才让我有了入坑的动力




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