文章目录
- 前言
- 一、核心类及其继承关系
- 二、核心类的职责与协作
- 2.1 Actor & Pawn
- 2.2 Controller
- 2.3 GameMode & GameState
- 2.4 PlayerState
- 2.5 HUD & UI
- 三、协作流程示例
- 总结
前言
Unreal Engine 5(UE5)的 Gameplay 框架 是一个高度模块化的系统,用于构建游戏逻辑、角色控制、多人同步和游戏规则等核心功能。其核心类和继承关系遵循面向对象设计原则,以下是详细的框架解析:
一、核心类及其继承关系
以下是 UE5 Gameplay 框架中关键类的 继承树:
-
UObject
- 所有 UE 对象的基类,提供反射(Reflection)、序列化(Serialization)、垃圾回收(GC)等基础功能。
-
AActor
-
继承自 UObject,是游戏中所有可放置在场景中的对象的基类(如角色、道具、光源等)。
-
包含位置、旋转、缩放等空间属性,支持 Tick 逻辑更新。
-
子类:
-
APawn:可被玩家或 AI 控制的实体(如角色、载具)。
- ACharacter:扩展了 APawn,内置角色移动组件(UCharacterMovementComponent)和胶囊体碰撞。
-
AController:控制 APawn 的逻辑实体。
-
APlayerController:玩家输入和 UI 交互的核心。
-
AAIController:驱动 AI 行为。
-
-
-
AGameModeBase:定义游戏规则(如胜利条件、玩家生成规则)。
- AGameMode(已弃用,推荐使用 AGameModeBase)。
-
AGameStateBase:同步游戏全局状态(如分数、剩余时间)。
- AGameState(已弃用,推荐使用 AGameStateBase)。
-
APlayerState:存储玩家数据(如昵称、分数)。
-
AHUD:管理游戏界面绘制(如血条、计分板)。
-
二、核心类的职责与协作
2.1 Actor & Pawn
- AActor
-
所有场景对象的基类,提供生命周期管理(BeginPlay, Tick, Destroy)和组件系统(UActorComponent)。
-
APawn
- 可被控制的实体,通过 AController 接收输入或 AI 指令。
-
ACharacter
- 专为角色设计,内置 CharacterMovementComponent 支持复杂移动(跳跃、攀爬)。
-
2.2 Controller
-
AController
- 逻辑与物理实体的分离:Controller 控制 Pawn,Pawn 处理物理表现。
-
APlayerController
- 处理玩家输入(如键盘、鼠标),管理 UI(通过 UUserWidget)。
- 在多人游戏中,每个玩家客户端有一个 PlayerController。
-
AAIController
- 驱动 AI 行为树(Behavior Tree)或状态机。
2.3 GameMode & GameState
-
AGameModeBase
- 仅在服务器存在,定义游戏规则(如玩家生成逻辑、胜利条件)。
- 生命周期方法:InitGame, PostLogin, StartPlay。
-
AGameStateBase
- 同步到所有客户端,存储全局游戏状态(如剩余时间、玩家列表)。
- 服务器更新后自动同步到客户端。
2.4 PlayerState
- APlayerState
- 存储玩家数据(如分数、装备),在多人游戏中同步到所有客户端。
- 每个玩家(包括 AI)有一个 PlayerState。
2.5 HUD & UI
- AHUD
- 绘制游戏内 UI(如准星、血条),通常与 UUserWidget 结合使用。
- 仅在本地玩家客户端存在。
三、协作流程示例
-
游戏启动
- 服务器创建 AGameModeBase,客户端创建 AGameStateBase。
-
玩家加入
- 服务器通过 GameMode 生成 APlayerController 和 APawn。
- PlayerController 获取输入并驱动 Pawn。
-
游戏进行
- GameState 同步全局状态(如倒计时),PlayerState 同步玩家数据。
- HUD 根据本地数据绘制 UI。
-
游戏结束
- GameMode 检测胜利条件并触发结束逻辑。
总结
UObject
└── AActor
├── APawn
│ └── ACharacter
├── AController
│ ├── APlayerController
│ └── AAIController
├── AGameModeBase
├── AGameStateBase
├── APlayerState
└── AHUD
通过理解这些类的职责和协作关系,开发者可以高效构建符合 UE5 规范的 Gameplay 逻辑,同时充分利用引擎的多人同步和模块化特性。