增加类
编辑器中有一个类向导, 可以生成类所需要的文件和基础宏
头文件
由于UE4对C++做了扩展, 实现了如序列化反射等特性, 跟Qt的做法类似: 在代码中加入一些宏关键字, 在编译期间生成相应的C++代码. 因此, 对于每个类来说, 都有会生成一个ClassName.generated.h的文件
类声明
UCLASS([specifier, specifier, ...], [meta(key=value, key=value, ...)])
class ClassName : ParentName
{
GENERATED_UCLASS_BODY()
}
UCLASS可以指定一说明符, 用于描述类的行为, 类似C#
类实现
需要在cpp中加入IMPLEMENT_CLASS宏
构造函数
AMyClass::AMyClass(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
ObjectInitializer用于从archetype或CDO中初始化属性.
ATimelineTestActor::ATimelineTestActor(const class FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
// Structure to hold one-time initialization
struct FConstructorStatics
{
ConstructorHelpers::FObjectFinder<UStaticMesh> Object0;
FConstructorStatics()
: Object0(TEXT("StaticMesh'/Game/UT3/Pickups/Pickups/Health_Large/Mesh/S_Pickups_Base_Health_Large.S_Pickups_Base_Health_Large'"))
{
}
};
static FConstructorStatics ConstructorStatics;
// Property initialization
StaticMesh = ConstructorStatics.Object0.Object;
}
ConstructorStatics用于初始化复杂类型, 避免每次构造产生额外性能开销. 常用于Asset引用, Class引用, Name类型等