发现一个问题,楼主在提问的时候总是加入自己(不正确)的理解来误导回答者。这样其实是非常不好的。
这一贴楼主实际想问为什么使用脚本全局变量不能和游戏中的“变量”(Game_Variable)一样带到存档里,但是一开始你并没有直接指出这个问题,而是使用了“能不能”。“可不可以”这样的问法。以至于回答者答非所问,浪费了双方的时间。
在 Ruby 中,带 $ 开头的变量都是全局变量。游戏中的 $game_variables 也不例外。需要注意的是,$game_variables 实际不是数组,之所以你可以进行 $game_variables[2] 这种操作完全是因为 [] 这个操作被定义在了 Game_Variables 里。除了这种取出元素,修改元素的操作以外,数组还可进行排序,取交集并集等操作,但 $game_variables 不能进行这样的操作。因此我们说 $game_variables 不是数组,而是一个可以取元素修改元素的容器。在脚本中也有相应的注释:实际上是类 Array 的外壳,如果你看过脚本应该有印象。
使用 $xyz = [] 这样的语句才是真正创建了一个数组,创建 7 个变量的数组并将其初始化为 0 可以用以下任意的写法
$xyz = [0, 0, 0, 0, 0, 0 ,0] $xyz = Array.new(7){ 0 }
$xyz = [0, 0, 0, 0, 0, 0 ,0]
$xyz = Array.new(7){ 0 }
第二种是直接调用了 Array 类的构造函数。创建完之后就可以使用数组 $xyz 了。需要注意的是全局变量和是否放进存档里没有任何关系,哪些变量可以带到下次游戏启动完全是游戏 Scene_Save 里的脚本决定的。 |