参考《Class Specifiers》
概要UE4有一个管理游戏对象的强大系统。UObject
是这个系统中所有对象的基类。UCLASS
宏用于标记这些UObject
的派生类,目的是把它们告知UObject
管理系统。UCLASS
的宏参数可以更加具体地指定该类型的各种行为。强调一下:UCLASS
宏只能修饰UObject
的子类。
UCLASS(BlueprintType, Blueprintable, config=Engine, meta=(ShortTooltip="An Actor is an object that can be placed or spawned in the world."))
class ENGINE_API AActor : public UObject
{
GENERATED_BODY()
//以下代码省略
}
类型说明符(Class Specifiers)
就是UCLASS()
括号中可选的说明符
Abstract
注明这个类是抽象类,可以阻止用户通过“拖拽”的方式向场景里添加这个类的Actor
Blueprintable
可以被蓝图类继承,该说明符会传递给派生类AActor
已声明NotBlueprintable
不可被蓝图类继承,该说明符会传递给派生类BlueprintType
可用于蓝图的变量类型AActor
已声明Config=ConfigName
指定默认的配置文件Placeable
可通过编辑器将此类放置到关卡、UI以及蓝图中,可继承NotPlaceable
不可通过编辑器将此类放置到关卡、UI以及蓝图中,可覆盖基类中的Placeable
Deprecated
已弃用
元数据说明符(Metadata Specifiers)
就是例子中mata=
后面的说明符
DisplayName="Blueprint Node Name"
蓝图中的节点名ChildCanTick
ChildCannotTick
范例
UCLASS()
UCLASS()
class GAMECPP_API UMyObject : public UObject
{
GENERATED_BODY()
};
此时不能创建派生自UMyObject
蓝图类
注意:由于AActor
类已经注明了UCLASS(Blueprintable)
,并且Blueprintable
是可以传递给派生类的,所以派生自AActor
的C++类即使标注为UCLASS()
也是可以被蓝图类继承的
UCLASS(Blueprintable)
UCLASS(Blueprintable)
class GAMECPP_API UMyObject : public UObject
{
GENERATED_BODY()
};
标注为UCLASS(Blueprintable)
以后,就可以被蓝图类继承了