首页 > 解决方案 > 如何将方法指针分配给 TFunction<>?

问题描述

我的控制器类中有一个方法,我想将该方法存储在 TFunction 对象中。我试过用: TFunction<void ()> FuncPtr{&PlayerController::ClassMethod}; 它不起作用。我的函数签名是: void ClassMethod();

标签: c++unreal-engine4

解决方案


//Let's say so:

.h
UFunction* ExecuteFunction;

UFUNCTION()
    void ChangeState(FName NextState)
UFUNCTION()
    void GlobalState_One()
UFUNCTION()
    void GlobalState_Two()
.cpp

void ChangeState(FName NextState)
{
    FName NameFunction = FName(FString("GlobalState_") + NextState.ToString());
    ExecuteFunction = FindFunction(NameFunction);
}

//Place of call
if (ExecuteFunction != nullptr)
            ProcessEvent(ExecuteFunction, nullptr);
//

//...
ChangeState("One");
//...

void GlobalState_One()
{

}
void GlobalState_Two()
{
    
}

推荐阅读