Unreal Engine Class System
Unreal
- 🎮 Unreal Engine Class System
- 🏛 核心概念
- 🧩 基础类层级
- 🛠️ 核心宏与用途
- 🔗 运行时对象管理
- ⚡ 常见继承关系图(简化)
- 📦 推荐学习路径
- 📚 参考
🎮 Unreal Engine Class System
🏛 核心概念
- Class System:Unreal 基于 C++ 类层级体系 + 反射系统(UClass、UObject、UProperty),使得游戏对象、组件、蓝图都能统一管理。
- 宏(UCLASS/USTRUCT/UENUM/UPROPERTY/UFUNCTION):告诉 Unreal Header Tool (UHT) 如何生成反射数据。
- 反射 (Reflection):让 C++ 类在运行时能被引擎识别、序列化、暴露给蓝图/编辑器。
🧩 基础类层级
类 | 作用 | 常见用途 |
---|---|---|
UObject | 所有 UE 类的基类,支持反射、GC、序列化 | 配置类、数据对象 |
AActor | 可放入关卡的对象,带有 Transform | 玩家、敌人、道具 |
APawn | 可被控制的 Actor | 玩家角色、AI 角色 |
ACharacter | 内置移动、骨骼、动画的 Pawn | 人形角色 |
UActorComponent | 附加到 Actor 的功能模块 | 血量组件、射击组件 |
USceneComponent | 带有 Transform 的组件 | 摄像机、碰撞体、Mesh |
UGameInstance | 游戏生命周期管理,全局对象 | 全局数据、网络会话 |
UGameMode | 定义规则与流程,只在服务器存在 | 单局规则 |
UGameState | 储存全局游戏状态 | 分数、时间 |
APlayerController | 玩家输入与控制逻辑 | 本地/远程玩家控制 |
APlayerState | 储存玩家信息(网络同步) | 分数、昵称 |
AHUD | UI 显示 | 血条、准星 |
UUserWidget | UMG UI 元素 | 菜单、HUD |
🛠️ 核心宏与用途
-
UCLASS()
声明一个继承自 UObject 的类,可以被反射系统识别。
-
USTRUCT()
声明一个可序列化的结构体。
-
UENUM()
声明一个可暴露给编辑器/蓝图的枚举。
-
UPROPERTY()
修饰类成员变量,使其可被编辑器、蓝图访问、序列化。
-
UFUNCTION()
修饰成员函数,使其能被蓝图调用或绑定事件。
🔗 运行时对象管理
- 反射系统 (UClass/UObject)
UClass
:存放类的元信息。UObject
:实例化后的对象基类。
- GC (Garbage Collection)
- Unreal 使用引用计数 + 标记清理机制。
- 必须用
UPROPERTY()
标记指针,才能被 GC 正确追踪。
⚡ 常见继承关系图(简化)
UObject└── AActor├── APawn│ └── ACharacter├── APlayerController├── AGameModeBase├── AGameStateBase├── AHUD└── ...
UObject└── UActorComponent└── USceneComponent├── UCameraComponent├── UStaticMeshComponent├── UPrimitiveComponent└── ...
📦 推荐学习路径
- 熟悉
UObject
生命周期与 GC。 - 学习
AActor
与组件化设计。 - 理解
Pawn
/Character
与 输入系统。 - 熟悉 GameMode / GameState / PlayerController / PlayerState 的职责分工。
- 进阶:研究 Gameplay Framework + UMG + AIController + Subsystem。
📚 参考
- Unreal 官方文档: Unreal Gameplay Framework
- 源码浏览:
Engine/Source/Runtime/Engine/
- 推荐书籍:《Learning C++ by Creating Games with Unreal Engine》