虚幻引擎5-Unreal Engine笔记之GameMode
、关卡(Level)
和 关卡蓝图(Level Blueprint)
的关系
code review!
文章目录
- 虚幻引擎5-Unreal Engine笔记之`GameMode`、`关卡(Level)` 和 `关卡蓝图(Level Blueprint)`的关系
- 1. GameMode 的作用
- 主要职责
- 实现方式
- 2. 关卡(Level)的角色
- 主要特点
- 与 GameMode 的关系
- 3. 关卡蓝图(Level Blueprint)的作用
- 主要职责
- 与 GameMode 的关系
- 与关卡的关系
- 4. 三者之间的关系总结
- 运行时关系
- 逻辑分工
- 5. 实际案例
- 6. 注意事项
1. GameMode 的作用
GameMode
是 UE5 中用于定义游戏规则和逻辑的核心类。它是一个全局的管理者,负责游戏的整体行为和状态。每个关卡都会关联一个 GameMode
,通常通过项目设置或关卡的 World Settings
指定。
主要职责
- 游戏规则:定义游戏的核心逻辑,比如胜负条件、计分规则等。
- 玩家管理:控制玩家角色的生成(通过
Pawn
和PlayerController
)、玩家登录/退出等。 - 游戏状态:管理游戏的状态(开始、进行中、结束等)。
- 默认类设置:指定默认的
Pawn
、PlayerController
、HUD
等类。 - 全局逻辑:处理不依赖于特定关卡的全局游戏逻辑。
实现方式
GameMode
通常通过 C++ 或蓝图实现。如果是蓝图,可以基于GameModeBase
或GameMode
类创建。- 在项目设置中可以设置默认的
GameMode
,也可以在特定关卡的World Settings
中覆盖默认设置。
2. 关卡(Level)的角色
关卡是 UE5 中游戏世界的具体表现形式,它包含了场景中的所有对象(如地形、静态网格体、光源、触发器等)。每个关卡可以看作是一个独立的游戏场景或区域。
主要特点
- 物理空间:关卡定义了游戏世界的几何结构和内容。
- 独立性:一个项目可以有多个关卡,游戏可以在关卡之间切换(比如从主菜单到游戏场景)。
- World Settings:每个关卡有自己的
World Settings
,可以指定该关卡使用的GameMode
。
与 GameMode 的关系
- 每个关卡运行时会加载一个
GameMode
实例,GameMode
控制该关卡的游戏逻辑。 - 关卡本身不包含游戏规则或逻辑,规则由
GameMode
提供,关卡只提供环境和对象。
3. 关卡蓝图(Level Blueprint)的作用
关卡蓝图是特定关卡的专用蓝图,用于处理与该关卡相关的特定逻辑。它可以看作是关卡的"脚本",用来控制关卡中对象的交互和事件。
主要职责
- 关卡特定逻辑:处理与该关卡相关的特定事件或交互,比如某个门的开关、某个触发器的逻辑。
- 对象交互:直接访问和操作关卡中的具体对象(Actor),比如移动平台、改变灯光状态等。
- 事件触发:响应关卡中的事件(如玩家进入某个区域)。
与 GameMode 的关系
- 关卡蓝图和
GameMode
是互补的: GameMode
负责全局游戏规则和逻辑,适用于整个游戏或跨关卡的逻辑。- 关卡蓝图负责处理特定关卡的局部逻辑,适用于与关卡中特定对象或事件相关的行为。
- 关卡蓝图可以与
GameMode
通信,比如通过调用GameMode
的函数或获取GameMode
的实例来访问全局数据。 - 例如:
GameMode
可能管理玩家的生命值,而关卡蓝图可能在玩家触发某个陷阱时调用GameMode
的函数来扣除生命值。
与关卡的关系
- 每个关卡有一个唯一的关卡蓝图,关卡蓝图直接绑定到该关卡。
- 关卡蓝图可以直接引用和操作关卡中的 Actor,因为它与关卡是紧密耦合的。
4. 三者之间的关系总结
GameMode
是全局的游戏规则管理者,负责游戏的核心逻辑和状态,通常跨关卡共享(除非特定关卡覆盖默认GameMode
)。关卡(Level)
是游戏世界的物理表现,提供了场景和对象,本身不包含逻辑,但可以通过World Settings
指定一个GameMode
。关卡蓝图(Level Blueprint)
是关卡的专用脚本,负责处理关卡特有的局部逻辑,可以与GameMode
交互来获取全局数据或触发全局事件。
运行时关系
- 游戏启动时,加载一个关卡。
- 关卡根据
World Settings
加载对应的GameMode
实例,GameMode
控制游戏规则。 - 关卡中的对象和事件通过关卡蓝图实现局部逻辑,关卡蓝图可以与
GameMode
交互来影响全局状态。
逻辑分工
- 如果逻辑是全局的、与游戏规则相关的,放在
GameMode
中(比如计分、游戏结束)。 - 如果逻辑是特定关卡相关的,放在关卡蓝图中(比如某个关卡中的机关触发)。
- 如果逻辑是特定 Actor 相关的,放在该 Actor 的蓝图中(比如一个角色的移动逻辑)。
5. 实际案例
假设正在开发一个射击游戏:
GameMode
:定义游戏规则,比如玩家有 3 条命,击杀敌人得 10 分,达到 100 分获胜。管理玩家的重生、游戏结束等逻辑。关卡(Level)
:包含游戏场景,比如一个竞技场,里面有墙壁、武器刷新点、敌人生成点等。关卡蓝图
:处理关卡中的特定逻辑,比如玩家进入某个区域时触发陷阱,扣除玩家生命(通过调用GameMode
的函数)。
6. 注意事项
- 避免逻辑重叠:尽量避免在关卡蓝图中写全局逻辑,保持
GameMode
和关卡蓝图的职责清晰。 - GameMode 覆盖:可以在关卡的
World Settings
中为特定关卡指定不同的GameMode
,以适应不同关卡的需求。 - 通信方式:关卡蓝图可以通过
Get Game Mode
节点获取GameMode
实例,调用其函数或访问其变量。