虚幻引擎程序设计浅析-第一章
1.1 简述
UE中最重要的五个类:
UObject
Actor
Pawn
Controller
Character
1.2 UObject
和Actor
1.2.1 UObject
类
什么时候应该继承自
UObject
类
当某一个类继承自UObject
类时,应该是需要获取UObject
类所提供的功能。具体来说,UObject
类提供了以下功能:
垃圾收集
在C++中,内存管理是手动控制的。为此UE提供了两个解决方案:
继承
UObject
类。通过UProperty
标记的变量会自动地进行对象的生命周期管理智能指针。只有非
UObject
类型才能使用这种方法
反射
反射是一种编程语言中的机制,能够让程序在运行时像拆积木一样,动态拆解、查看并操作自身代码结构(如类、方法、属性)。
可以这样理解:当你用调试器查看对象时,即使你事先不知道这个对象内部有什么属性和方法,调试器也能通过反射机制动态列出所有内容供你检查。
序列化
通过序列化,我们可以将一个类的对象保存在磁盘中,并在下次运行时进行加载。
当然我们也可以自行实现序列化功能,而不依赖于UObject
类。
与Editor进行交互
让你的类的变量能够在Editor中进行编辑。
运行时类型识别
顾名思义
网络复制
继承自UObject
类,其被宏标记的变量能够自动完成网络复制的功能。
1.2.2 Actor
类
什么时候应该继承自
Actor
类
思考这个问题,我们可以沿用前面的思路,也就是明确Actor
类提供了怎么的功能:
Actor
类能够被挂载组件。这里的“组件”并非Actor
,我们需要格外注意,UE中的组件与Unity中的组件有本质上的区别。
在UE中,一个场景实体对应一个类。而在Unity中,每个对象可以挂载多个脚本组件,其中每个脚本是一个单独的类。
所以,问题的答案很明确:当需要挂载组件时,才应该继承自Actor
类。
1.3 Pawn
、Character
和Controller
1.3.1 Pawn
是所有可被控制对象的基类。
1.3.2 Character
Character
类继承自Pawn
类,专为人形角色设计的子类。额外提供了一个特殊的组件,实现了基础的角色移动功能。
1.3.3 Controller
Controller
决定 “做什么”,Pawn
负责 “怎么做”。