虚幻C++中的标记宏,用于标记从UObject派生的类,使得UObject处理系统能够识别到他们,以实现垃圾回收(GC)、蓝图C++通信。用一句简单的话来宏观概括虚幻C++中的标记宏的作用那就是:使自己写的与虚幻引擎无缝衔接。
(相关资料图)
几个典型的标记宏:(例如我们的项目名称为MyProject,在该项目中创建一个继承自UObject名为UMyObject的类)
1.#include” MyObject (自己创建的类的头文件名称).generated”
我们在虚幻引擎中创建任何一个类,系统会为我们自动生成一个头文件,拥有这个头文件即意味着加入了反射系统。需要注意的是这个头文件必须是最后一个被引入的头文件,因为此头文件需要了解其他类,所以放到最后。
(描述指令,描述指令,…)
使虚幻引擎能识别自己创建的类(UMyObject)
MYPROJECT_API UMyObject : public UObject
MYPROJECT_API将UMyObject类公开到其他模块
_BODY()
该宏不获取参数,但会对类进行设置,以支持引擎要求的基础架构,该宏将成员访问等级设为”public”
(指令,指令,…)
用于标记函数
几个常用指令:
BlueprintCallable,该函数可以在蓝图中调用
BlueprintNativeEvent,此函数可在蓝图中重写,若蓝图重写则函数实现在蓝图中,若没有重写,则函数实现在(函数名_Implementation)上。
BlueprintPure,构建一个获取对象数据的纯函数,所以被标记函数一定要有有效返回值。蓝图纯函数不在执行队列中,只能传递数据。
Category,此函数在蓝图中分类
…
(指令,指令,…)
用于标记对象,如果希望变量可以在蓝图中被操作,则应该放入公有域或保护域,不能放在私有域。
几个常用指令:
BlueprintReadOnly,该属性在蓝图中只读
BlueprintReadWrite,蓝图中可读可写
EditAnywhere,在引擎编辑器窗口和细节面板中均可编辑
EditDefaultsOnly,在引擎编辑器窗口可以编辑,但细节面板中不可编辑
VisibleAnywhere,属性窗口可见,但不可编辑
VisibleDefaultsOnly,只能在原型蓝图编辑器属性窗口中见,不可编辑
Category,变量在蓝图中分类
meta,元数据说明符,说明标记的函数或对象与虚幻引擎的各种关系
使我们可以对函数或属性进行别名操作
…
(完)
留下个赞呗~
关键词:
品牌