数据库、原则上不会在游戏中改变。相对于此,像是在地图画面上移动的人物这种状态时时刻刻都在改变的数据,是由游戏对象处理的。
DataManager 脚本页中存在着 create_game_objects 这个方法。在数据库生成的同一时刻,这个方法也会被调用。
def self.create_game_objects $game_temp = Game_Temp.new $game_system = Game_System.new $game_timer = Game_Timer.new $game_message = Game_Message.new $game_switches = Game_Switches.new $game_variables = Game_Variables.new $game_self_switches = Game_SelfSwitches.new $game_actors = Game_Actors.new $game_party = Game_Party.new $game_troop = Game_Troop.new $game_map = Game_Map.new $game_player = Game_Player.new end
和数据库的 $data_xxxx 系列相同,他们都属于全局变量。生成 Game_Xxxx 类的实例并让这些变量可以引用。你应该对 Game_Xxxx 这个名字有点印象吧?在脚本编辑器里,上半部分的脚本中都带着这一类名称。也就是说,这里是把在那些部分中定义好的类实例化的意思。
在类的名称后面加上 .new 就是表示「要创建一个类的实例」如果有人忘记了实例是什么,那么请先复习一下对象。
各个对象如下表所示。和数据库的情况不同,这些对象所属的类并没有事先內嵌在 RGSS 中,而是在脚本编辑器里定义的。
变量名 | 内容 | 类 |
---|---|---|
$game_temp | 临时数据 | Game_Temp |
$game_system | 系统数据 | Game_System |
$game_timer | 计时器 | Game_Timer |
$game_message | 文字信息 | Game_Message |
$game_switches | 开关 | Game_Switches |
$game_variables | 变量 | Game_Variables |
$game_self_switches | 独立开关 | Game_SelfSwitches |
$game_actors | 角色 | Game_Actors |
$game_party | 队伍 | Game_Party |
$game_troop | 敌群 | Game_Troop |
$game_map | 地图 | Game_Map |
$game_player | 玩家 | Game_Player |
这些类原则上只提供一种数据结构,并不具有显示图片、接受输入按钮等等的功能。不过,Game_Player 类为了方便,有包含利用方向键移动、确定键启动事件的处理。
能够当成全局变量直接取用的游戏对象就只有上述那些,不过在这些对象的内部,又包含了其他的游戏对象。这些游戏对象如下表所示。
类 | 内容 | 说明 |
---|---|---|
Game_Screen | 画面效果 | Game_Map、Game_Troop 内部使用 |
Game_Picture | 图片 | Game_Pictures 内部使用 |
Game_Pictures | 图片列表 | Game_Screen 内部使用 |
Game_BaseItem | 物品/技能 | Game_Action、Game_Actor、Game_Party 内部使用 |
Game_Action | 战斗行动 | Game_Battler、Game_Actor 内部使用 |
Game_ActionResult | 战斗行动的结果 | Game_Battler 内部使用 |
Game_Actor | 角色 | Game_Actors 内部使用 |
Game_Enemy | 敌人 | Game_Troop 内部使用 |
Game_CommonEvent | 公共事件 | Game_Map 内部使用 |
Game_Follower | 队伍跟随(队列行进) | Game_Followers 内部使用 |
Game_Followers | 队伍跟随列表 | Game_Player 内部使用 |
Game_Vehicle | 交通工具 | Game_Map 内部使用 |
Game_Event | 地图事件 | Game_Map 内部使用 |
Game_Interpreter | 事件指令解释器 | Game_Map、Game_Troop、Game_Event 内部使用 |
此外、还有一些重要的类在下表:
类 | 内容 | 说明 |
---|---|---|
Game_BattlerBase | 战斗者(基本) | Game_Battler 的父类 |
Game_Battler | 战斗者 | Game_Actor、Game_Enemy 的父类 |
Game_Unit | 单位 | Game_Party、Game_Troop 的父类 |
Game_CharacterBase | 人物(基本) | Game_Character 的父类 |
Game_Character | 人物 | Game_Player、Game_Event 的父类 |
所谓的父类(super class)是指被别的类继承的那一方。意思就是,角色与敌人、队伍与敌群、人物与事件等类都有各自共通的部分,将这些共通的部分整合成单一的类别。
「脚本入门篇」的目的是要让读者了解内建脚本的大致轮廓,所以在本章提到的类无法一一介绍。不过在真正要挑战改造脚本的时候,理解这些类如何被定义是非常重要的事情。
解读上的基本思考方针就跟在 Vocab、Sound、Cache 模块解释时一样,就算一开始会不得要领,也建议可以尝试浏览有兴趣的部分。