游戏对象

数据库、原则上不会在游戏中改变。相对于此,像是在地图画面上移动的人物这种状态时时刻刻都在改变的数据,是由游戏对象处理的。

$game_xxxx

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 模块解释时一样,就算一开始会不得要领,也建议可以尝试浏览有兴趣的部分。