Wiki
709 words
4 minutes
虚幻结构
Updated 2025-06-10
概念
Actor
演员类,对应到Unity中的GameObject 但是我们可以在Unreal中自己定义并编写 Actor C++类
ActorComponent
设置
在通用设置中,我们可以设置热重载以及,创建C++类后自动编译的选项(建议关掉)。
这篇想回答什么
“虚幻结构”更适合从整体视角看 Unreal,而不是只记单个类。
尤其是从 Unity 迁移过来时,最容易困惑的是:
- 为什么类这么多
- 为什么控制逻辑和表现逻辑要拆开
- 为什么很多能力不是挂在对象上,而是分散在 Controller、GameMode、Subsystem 里
所以这里更像是一张 Unreal 的结构地图。
核心对象关系
可以先记住这条主线:
UObject -> Actor -> Pawn -> Character
以及另一条控制链:
GameMode -> Controller -> Pawn
再配合运行时服务层:
这样看 Unreal 会清楚很多。
几个核心层级
对象层
- 万物之始 UObject:反射和 GC 的基础
- Actor:进入世界的实体
- ActorComponent:给 Actor 提供可复用能力
控制层
PlayerController/AIController:负责输入和决策- Pawn-Controller-GameMode:描述控制权和规则入口
规则层
GameMode:当前关卡的规则与生成逻辑GameState/PlayerState:更偏运行时状态同步
全局服务层
- GameInstance:跨关卡数据
- SubSystem:结构化全局服务
常见模块分层
一个比较顺手的理解方式是:
- 表现:动画、特效、音频、UI
- 实体:Actor、Character、Component
- 控制:Controller、BehaviorTree、输入系统
- 规则:GameMode、关卡流程
- 全局:GameInstance、Subsystem、存档、资源加载
这比“记每个类是干嘛的”更重要,因为工程上你写代码时面对的是分层,而不是单点概念。
从 Unity 迁移时的理解路径
如果带着 Unity 思维来学 Unreal,我会建议按这条顺序理解:
- 先搞懂 Actor 和 ActorComponent
- 再看 Pawn、Character、
Controller - 然后看
GameMode、GameInstance、SubSystem - 最后再看行为树、动画蓝图、资源加载这些具体系统
原因很简单:底层对象关系没搞懂,后面的系统都会像碎片。
工程上的几个结论
- Unreal 更强调“职责拆分”,不是把所有逻辑塞进一个对象
- 反射系统是整套工具链的基础,不只是给编辑器看的
- 世界内对象、控制逻辑、全局系统三者一定要分开理解
- 热重载和自动编译可以用,但反射结构改动时要谨慎
设置建议
在编辑器设置里,自动编译和热重载虽然方便,但对 C++ 项目并不总是稳定。
经验上:
- 小改动可以用
Live Coding - 改反射声明、组件结构、继承关系时,优先完整编译
这部分也和 UnrealHandTools、虚幻文件夹管理 有关系。