1、C++自定义方法,蓝图调用
UFUNCTION(BlueprintCallable, Category = "MyFunc")
void dosth();
UFUNCTION
宏是处理将C++函数暴露给反射系统的一些事情,参数BlueprintCallable
意味着这个函数可以在蓝图中调用,而后面的目录是必须有的,这样在蓝图中右键点击的时候,我们就可以根据这个目录找到我们需要的函数。
2、蓝图定义方法,C++调用
UFUNCTION(BlueprintImplementableEvent, Category="MyFunc")
void dosth();
当我们在蓝图中定义了一系列操作后,我们也想用C++调用,我们利用BlueprintImplementableEvent
这个参数,让在C++定义的这个函数在蓝图中实现成为一个event。另外:我们只要在头文件声明这个方法即可,不用实现函数体,不然会报错。
我们在蓝图中,通过中这个event打印一句话。
在某些地方调用即可,这里我在Actor在BeginPlay()方法调用了dosth函数。
void AMyActor::BeginPlay()
{
Super::BeginPlay();
dosth();
}
3、C++有默认方法,蓝图可以覆盖
UFUNCTION(BlueprintNativeEvent, Category = "MyFunc")
void dosth();
然后我们要实现一个方法。
void AMyActor::dosth_Implementation()
{
//do something
}
这样的话,如何蓝图没有实现dosth
方法,那么我们就调用dosth_Implementation
这个方法,如果蓝图实现了dosth
,那么dosth_Implementation
就不会调用。