赞
踩
void AMyCharacter::CallFuntionWhitString(AActor* InActor, FString FunCName)
{
FName FunFName = FName(*FunCName);
UFunction* p_Func = InActor->FindFunction(FunFName);
if (p_Func == NULL) return;
InActor->ProcessEvent(p_Func, NULL);
}
有几个注意点:
1.看用法也知道必须继承自AActor类
2.必须在需要动态访问的函数前加UFUNCTION
3.比较方便的是,蓝图里面定义的方法也可以这样访问到
------------------------------------------------------------------------------------
C++调用蓝图函数
首先创建C++为基类,蓝图继承后创建一个函数Test
#include "OutputDevice.h"
FString cmd = FString::Printf(TEXT("BB CD"));
//BB函数名,CD参数
FOutputDeviceDebug device;
CallFunctionByNameWithArguments(*cmd, device, NULL, true);
蓝图重载C++函数(可以在C++中其他位置调用一个目前没有任何功能的函数(事件),而该函数的具体实现交给蓝图实现)
UFUNCTION(BlueprintImplementableEvent)
void OnTest();
在蓝图中Add Event,找到对应的函数名,创建后即可实现具体逻辑
然后也可以在自己的C++代码中调用该方法
void MyActor::OnPressed()
{
OnTest();
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。