一、GENERATED_BODY() 如果定义的是GENERATED_BODY(),那么意味着我不需要使用父类的构造函数,也就是说,我不能直接使用父类的声明,但是,我需要去实现的时候,我就必须自己去声明,否则就会报错。 然后就可以在CPP中实现自己声明的这个构造函数,编译通过。 如果不去声明自己的构造函数,就会报错: 二、GENERATED_UCLASS_...
#define GENERATED_BODY_LEGACY(...) BODY_MACRO_COMBINE(CURRENT_FILE_ID,_,__LINE__,_GENERATED_BODY_LEGACY) #define GENERATED_BODY(...) BODY_MACRO_COMBINE(CURRENT_FILE_ID,_,__LINE__,_GENERATED_BODY) GENERATED_BODY ———> BODY_MACRO_COMBINE ———> BODY_MACRO_COMBINE_INNER———>A##B...
// This pair of macros is used to help implement GENERATED_BODY() and GENERATED_USTRUCT_BODY()#define BODY_MACRO_COMBINE_INNER(A,B,C,D) A##B##C##D#define BODY_MACRO_COMBINE(A,B,C,D) BODY_MACRO_COMBINE_INNER(A,B,C,D)// Include a redundant semicolon at the end of the generat...
UE强大反射背后的第一步解密概要本文算是一篇UE探索的开始,讨论一下UE序列化功能的准备工作。我们写一个UObject简单派生类UMyTest,加三个宏 UCLASS()与GENERATED_BODY()及UFUNCTION(),UE的UBT帮我们生成了什么…
GENERATED_UCLASS_BODY() 如果定义的是GENERATED_UCLASS_BODY(),那么意味着我使用父类的构造函数,也就是说,我不需要为自己声明构造函数,直接去实现父类声明那个构造函数。 UCLASS() classMYCHARACTER_APIAMyCharacter:publicACharacter { GENERATED_UCLASS_BODY() ...
GENERATED_UCLASS_BODY(): 如果定义的是GENERATED_UCLASS_BODY(),那么意味着我使用父类的构造函数,也就是说,我不需要为自己声明构造函数,直接去实现父类声明那个构造函数,那么在CPP文件中去实现,而不需要在H里面去声明。 总结:属于之前版本的宏,自动生成带有指定参数的构造函数,不用用户再头文件中生明构造函数,需...
UCLASS([specifier, specifier, ...], [meta(key=value, key=value, ...)])classClassName:publicParentName {GENERATED_BODY() } 声明包含一个类的标准 C++ 类声明。在标准声明之上,描述符(如类说明符和元数据)将被传递到 UCLASS 宏。它们用于创建被声明类的 UClass,它可被看作引擎对类的专有表达。此外...
原因就是GENERATED_UCLASS_BODY()宏。这个宏下面的成员默认为Public,这是一个不推荐使用的宏,应该使用GENERATED_BODY()替换,但是引擎源码大部分都使用的这个宏,属于遗留问题。在函数中不带Const的引用在蓝图中默认是输出引脚可以在参数前面添加UPARAM(ref)宏
UCLASS(BlueprintType, Blueprintable) class SINGLETONOBJECT_API USingleton : public UObject { GENERATED_BODY() public: UFUNCTION(BlueprintCallable) // 蓝图可调用 static USingleton* GetSingletonObjectIns(); UFUNCTION(BlueprintCallable) void InitializeObject(); // 初始化 ...