(主要内容来自官方文档,加入了一些自己的理解)
下面都假设C++中有个函数名称为SomeFunction.
C++调用蓝图函数:
在C++函数声明前加入BlueprintImplementableEvent标签,则SomeFunction在蓝图中以事件的方式出现,可以调用该事件。
UFUNCTION(BlueprintImplementableEvent, Category="SomeCategory")
void SomeFunction();
注意,该函数在C++中不能有实现(定义),不然编译会报错。
这种跨边界调用方式的意义在于:可以在C++中其他位置调用一个目前没有任何功能的函数(事件),而该函数的具体实现交给使用蓝图的设计师来决定。
给上述的函数添加默认的C++实现:
要想添加默认的C++实现,就不能使用BlueprintImplementableEvent标签,而是对该函数使用BlueprintNativeEvent,另外,需要手动再添加一个函数声明,函数名称有固定的格式:SomeFunction_Implementation。
SomeFunction不能有实现(定义),SomeFunction_Implementation必须有实现(定义)。
//.h文件********************************
UFUNCTION(BlueprintNativeEvent, Category = "SomeCategory")
void SomeFunction();