UE4 架构:对象体系与游戏框架分层
ABSTRACT
融合两篇 UE4 学习笔记,梳理 Unreal 的两层骨架:底层是 UObject 反射体系与 UBT/UHT 构建工具支撑的对象模型(Object → Actor+Component → Level → World → GameInstance → Engine),上层是 Pawn/Controller/PlayerState 与 GameMode/GameState/关卡蓝图按 MVC 职责拆分的游戏框架。掌握「Actor 是容器、逻辑在框架类、数据为同步而分离」三条原则,即可建立正确的 Unreal 心智模型。
底层:UObject 与构建工具
- UObject 是万物之源:反射、序列化、网络同步、GC 集于一身,让 UE C++ 用起来像带自动管理的高级语言。
- 命名前缀约定(UHT 强制):T 模板、U UObject 派生、A Actor 派生、S Slate 控件、I 接口、E 枚举、b 布尔、F 其余结构。
- UBT 编译模块与依赖(Target.cs/Build.cs);UHT 解析 UCLASS 等宏生成反射代码(
*.generated.h)。
中层:Actor-Component 与 Level/World
- Actor 只是容器:Transform 在 RootComponent,Input 转发给 UInputComponent;只提供创建销毁、网络复制、时间触发等基础逻辑。
- 组件规则:ActorComponent 不可嵌套,SceneComponent 才有嵌套与父子关系;ChildActorComponent 充当 Actor 间组合的胶水。
- Level 是 Actor 容器,不鼓励复杂逻辑(ALevelScriptActor 隐藏组件列表即信号);World = Persistent Level + SubLevel(UE5 起 World Partition 取代 World Composition)。
- AWorldSettings 实为「Level 设置」:全局配置以 PersistentLevel 为准,光照质量类可按 Level 生效。
- 组成链:
Object → Actor+Component → Level → World → WorldContext → GameInstance → Engine;游戏级全局逻辑放 GameInstance 派生类。
上层:游戏框架的 MVC 分层
- 玩家侧三分:Pawn(表现/躯体)、Controller(逻辑/意志)、PlayerState(数据,为网络同步而分离)。
- 玩法侧三分:关卡蓝图(静态场景机制)、GameMode(动态规则,可跨 Level 复用)、GameState(一场游戏的数据)。
- 铁律:联机时 GameMode 只存在于服务器,不能承担任何客户端工作;GameState(一场游戏)与 PlayerState(一个玩家)不可混用。
- Component 定位:承载与特定游戏无关、可跨项目复用的逻辑。
- 设计取向:逻辑尽量通用并放对层;每层不要对上下层细节知道太多。
关联概念
来源回溯
- UE4 整体构成及使用简介
- UE4 数据从底到顶类层级分解
- UE4 网络同步详解(一)(GameMode 只在服务器等约束的展开)