UCLASS宏用于标记UObject的派生类。
例如:
UCLASS(BlueprintType, Blueprintable, config=Engine, meta=(ShortTooltip="An Actor is an object that can be placed or spawned in the world."))
class UMyObject : public UObject
{
GENERATED_BODY()
}
UCLASS()
括号中可选的说明符
说明符 | 说明 |
---|---|
Abstract | 注明这个类是抽象类,可以阻止用户通过“拖拽”的方式向场景里添加这个类的Actor |
Blueprintable | 可以被蓝图类继承,该说明符会传递给派生类 |
NotBlueprintable | 不可被蓝图类继承,该说明符会传递给派生类 |
BlueprintType | 可用于蓝图的变量类型 |
Config=ConfigName | 指定默认的配置文件 |
Placeable | 可通过编辑器将此类放置到关卡、UI以及蓝图中,可继承 |
NotPlaceable | 不可通过编辑器将此类放置到关卡、UI以及蓝图中,可覆盖基类中的Placeable |
mata=
后面的说明符
元数据说明符 | 说明 |
---|---|
DisplayName="Blueprint Node Name" | 蓝图中的节点名 |
ChildCanTick | 用于Actor和Component类。如果host不能勾选,则基于此参与者或组件的蓝图类可以覆盖bCanEverTick标记,即使bCanBlueprintsTickByDefault是false。 |
ChildCannotTick | 用于Actor和Component类。如果host不能勾选,基于此Actor或Component的蓝图类永远不会勾选,即使bCanBlueprintsTickByDefault为true |
GENERATED_BODY宏给一个简单的自定类加了下面这些东西:
- 添加了一个静态函数
static void StaticRegisterNativeUMyObject();
- 声明结构体
struct Z_Construct_UClass_UMyObject_Statics;
为friend - 添加了一个public构造函数
UMyObject(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
- 通过声明
private: UMyObject(UMyObject&&); UMyObject(const UMyObject&&);
禁用move和copy - 通过声明
private: UMyObject& operator=(UMyObject&&); UMyObject& operator=(const UMyObject&&);
禁用赋值动作 - 增加一个静态函数
static UClass* GetPrivateStaticClass();
- 内部枚举
enum {StaticClassFlags=};
- 内部类型定义Super,表示父类
- 内部类型定义ThisClass,表示该类的UClass对象
- 添加静态函数
staic UClass* StaticClass();
,用来返回当前类的UClass对象 - 添加静态函数
static const TCHAR* StaticPackage();
,返回当前类所属的包名 - 添加静态函数
inline static EClassCastFlags StaticClassCastFlags()
,放回当前类静态转型标记 - 重载operator new函数(如果有机会后面分享到UE4对象的内存管理在来详细分析)