对于纯蓝图定义的函数或者UFUNCTION可以使用函数
UObject中的
virtual void ProcessEvent( UFunction* Function, void* Parameters )
进行调用
比如蓝图终定义了BP_Func()
可在C++代码中这样调用:
ProcessEvent(FindFunctionChecked(FName("BP_Func"),NULL);
第二个参数为函数参数,无参数直接设为NULL。
对于有参数的情况则比较麻烦一点,需要在反射文件gen文中找到对应反射变量。
如UFUNCTION标记的函数使用实例:
函数 void APlayerController::ClimpClimp(APlayerCharacter* playerJL)
调用:
PlayerController_eventClimpClimp_Parms Parms;
Parms.playerJL=playerJL;
ProcessEvent(FindFunctionChecked(NAME_APlayerController_ClimpClimp),&Parms);
PlayerController_eventClimpClimp_Parms是在对应类的反射文件gen.h对函数ClimpClimp(APlayerCharacter*playerJL)中参数反射生成的一个结构体
struct PlayerController_eventClimpClimp_Parms \
{ \
APlayerCharacter* playerJL; \
}; \
对有参函数,声明定义,初始化该结构体后,将参数Parms传入ProcessEvent进行调用。