最核心的五个类:
- UObject
- Actor
- Pawn
- Controller
- Character
UObject类
- 垃圾收集
- 继承自UObject类,同时指向UObject类实例对象的指针成员变量,使用UPROPERTY宏进行标记。虚幻引擎的UObject架构会自动地被Uproperty标记的变量考虑到垃圾回收系统中,自动地进行对象的生命周期管理。
- 采用智能指针。只有非UObject类型,才能够使用智能指针进行自动内存释放。
- 反射
- 序列化
- 一个类的对象保存到磁盘,同时在下次运行时完好无损地加载,需要继承自UObject类。
- 可以通过纯c++类手动实现序列化所需地函数,来让这个类支持序列化功能,这并不是UObject类独有的。
- 与虚幻引擎编辑器的交互
- 运行时类型识别
- 虚幻引擎打开了/GR-编译器参数,无法使用C++标准的RTTI机制:dynamic_cast。
- 希望使用,继承自UObject,然后使用Cast<>函数来完成。
- 网络复制
UObject类会在引擎加载阶段,创建一个Default Object默认对象:
- 构造函数并不是在游戏运行的时候调用,即便只有一个UObject对象存在于场景中,构造函数依然会被调用两次。
- 构造函数被调用的时候,UWorld不一定存在。GetWorld()可能为空。
Actor类