其实文档都有,做个整理方便查询:
类类型(UObject、AActor、UActorComponent 和 UStruct):
UObject:(不常用)此类结合 UClass (包含UObject派生类实例的所有元数据)提供引擎中最重要的若干基础服务:
- 属性和方法反射
- 属性序列化
- 垃圾回收
- 按命名查找 UObject
- 可配置属性数值
- 属性和方法网络支持
AActor:拥有一系列事件,可在生命周期中进行调用:
- BeginPlay - 对象首次出现在游戏进程中时调用
- Tick - 每帧调用一次,在一段时间内执行操作
- EndPlay - 对象离开游戏进程时调用
UActorComponent :通常为 AActor 指定的是与其在游戏中全局作用相关的高级目标,而 UActorComponent 通常执行的是支持这些高级目标的单个任务。组件也可附着到其他组件,或为 Actor 的根组件。组件只能附着到一个父组件或 Actor,但可被多个子组件附着。
- RootComponent - 这是在 AActor 组件树中拥有顶层组件的 AActor 成员
- Ticking - 组件作为拥有 AActor Tick() 的部分被点击
UStruct:使用 UStruct 时不必从任意特定类进行延展,只需要使用 USTRUCT() 标记结构体,编译工具将执行基础工作。和 UObject 不同,UStruct 不会被垃圾回收。如创建其动态实例,则必须自行管理其生命周期。UStruct 为纯旧式数据类型。它们拥有 UObject 反射支持,以便在虚幻编辑器、蓝图操作、序列化和网络通信中进行编辑。
反射系统:
UE4 使用其自身的反射实现,可启用动态功能,如垃圾回收、序列化、网络复制和蓝图/C++ 通信。这些功能为选择加入,意味着您需要为类型添加正确的标记,否则引擎将无视类型,不生成反射数据。
UCLASS() - 告知虚幻引擎生成类的反射数据。类必须派生自 UObject。常用说明符如下:
- Blueprintable - 此类可由蓝图延展。
- BlueprintReadOnly - 此属性只可从蓝图读取,不可写入。
- Category - 定义此属性出现在编辑器 Details 视图下的部分。用于组织。
- BlueprintCallable - 可从蓝图调用此函数。
GENERATED_BODY() - UE4 使用它替代为类型生成的所有必需样板文件代码。
UPROPERTY() - 使 UCLASS 或 USTRUCT 的成员变量可用作 UPROPERTY。UPROPERTY 用途广泛。它允许变量被复制、被序列化,并可从蓝图中进行访问。垃圾回收器还使用它们来追踪对 UObject 的引用数。UPROPERTY 说明符列表
UFUNCTION() - 使 UCLASS 或 USTRUCT 的类方法可用作 UFUNCTION。UFUNCTION 允许类方法从蓝图中被调用,并在其他资源中用作 RPC。UFUNCTION 说明符列表
UCLASS() 范例:
#include "MyObject.generated.h"
UCLASS(Blueprintable)
class UMyObject : public UObject
{
GENERATED_BODY()
public:
MyUObject();
UPROPERTY(BlueprintReadOnly, EditAnywhere)
float ExampleProperty;
UFUNCTION(BlueprintCallable)
void ExampleFunction();
};
首先注意 - “MyClass.generated.h”文件已包含。虚幻引擎将生成所有反射数据并将放入此文件。必须在声明类型的头文件中将此文件作为最后的 include 包含。
同时可以在标记上添加额外的说明符,通过说明符可对类型拥有的特定行为进行说明。
类命名前缀
虚幻引擎为您提供在构建过程中生成代码的工具。这些工具拥有一些类命名规则。如命名与规则不符,将触发警告或错误。下方的类前缀列表说明了命名的规则。
- 派生自 Actor 的类前缀为 A,如 AController。
- 派生自 对象 的类前缀为 U,如 UComponent。
- 枚举 的前缀为 E,如 EFortificationType。
- 接口 类的前缀通常为 I,如 IAbilitySystemInterface。
- 模板 类的前缀为 T,如 TArray。
- 派生自 SWidget(Slate UI)的类前缀为 S,如 SButton。
- 其余类的前缀均为 字母 F ,如 FVector。
数字类型
因为不同平台基础类型的尺寸不同,如 short、int 和 long,UE4 提供了以下类型,可用作替代品:
int8/uint8 :8 位带符号/不带符号 整数
int16/uint16 :16 位带符号/不带符号 整数
int32/uint32 :32 位带符号/不带符号 整数
int64/uint64 :64 位带符号/不带符号整数
标准 浮点 (32-bit) 和 双倍(64-bit)类型也支持浮点数。