GameMode 游戏模式

即使是最没有限制的游戏也以规则为基础,而这些规则构成一个游戏类型。在最基本的层面上,这些规则包括:

在场的玩家和观众数量,以及所允许的玩家和观众最大数量。 玩家如何进入游戏,可能包括生成地点和生成/重生行为。 是否可以暂停游戏,以及如何暂停游戏。 等级间的过渡,包括游戏是否应以电影模式开始。

虽然所有游戏类型都有某些共同的基本规则,但取决于你在开发的游戏类型,它们有无限种变化。熟悉的游戏类型包括第一人称射击游戏,如:《死亡竞赛》、《夺旗》和《终极悍将》——选择这些游戏类型往往是比赛设置过程中的菜单选项,因此它们非常明显。其它类型,如角色扮演冒险游戏或平台游戏可能有较少的变量,以及不太明显的游戏类型,但游戏类型仍设定游戏的条件。例如,可能会向玩家施加时间限制,当玩家达到某一阶段或击败一位“首领”人物时才能过关。更复杂的情况会是《地牢探索者》类型的游戏。在主世界中会有一个总体的游戏类型,它将留意游戏的进度和条件。在每个地牢中可能会有该地牢特定的游戏类型,从而使每个地牢都完全独特,并有自己的一套规则和目标。

有两种主要的类来处理有关游戏类型的信息:GameMode 和 GameState。

GameMode

“AGameMode” 类定义所玩的游戏,并执行游戏规则。“AGameMode” 中的一些默认功能包括:

任何设定游戏规则的新函数或变量都应添加在 “AGameMode” 类的子类中。从玩家以什么库存道具开始,或有多少条命,到时间限制,以及结束游戏所需的分数都属于 GameMode。可以为游戏应包括的每个游戏类型创建 “AGameMode” 类的子类。一个游戏可以有任何数量的游戏类型,因此有任何数量的 “AGameMode” 类的子类;然而,在任何特定时间只可以使用一种游戏类型。每次通过 “UGameEngine::LoadMap()” 函数初始化一个游戏等级时都会实例化一个 GameMode Actor。该 Actor 定义的游戏类型将被用于该等级所持续的时间。

比赛状态

GameMode 包含监测比赛状态或整体游戏流程的状态机。要查询当前状态,你可以使用 GetMatchState,或诸如 HasMatchStarted、IsMatchInProgress 和 HasMatchEnded 的包装器。以下是可能的比赛状态:

默认情况下,比赛状态几乎总为 InProgress。但个别游戏可以覆盖该行为,以构建有更复杂规则的多人游戏。

GameMode 派生 Blueprints

GameMode 是可制定蓝图的类。可以创建 GameMode 派生的 Blueprints,并用其作为项目或等级的默认游戏模式。

GameMode 派生 Blueprints 可以设置以下默认值:

设置 GameMode

有几种方法来设置某一等级的 GameMode,以下按照从最低优先级到最高优先级的顺序:

关于设置 Game Mode 的例子,请参阅 设置游戏模式 文档。