1. 程式人生 > >UE4在C++中通過字串呼叫函式

UE4在C++中通過字串呼叫函式

在UE4中,支援通過字串呼叫某個物件的函式,可以方便快捷的定製適應性更強的操作邏輯,幫助我們解決一些擴充套件功能,例如行為樹中的任務節點,呼叫黑板中某個物件的某個函式,這是非常有用的!
所有被呼叫的函式必須加上巨集UFUNCTION否則無法呼叫成功
如果函式本身並沒有引數,可參照如下程式碼進行邏輯編寫

.cpp

1

2

3

4

5

6

7

8

//cpp檔案中,任意函式體

void UBTTask_PlayAnimNet::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

2

3

4

5

6

7

8

9

10

11

12

//函式體內

//定義結構體,用來傳遞引數和接受返回值

//結構體中最後一位成員屬性用來接收返回值,如無返回可直接拋棄

//在返回值之前均為引數

//呼叫結束後,返回值會傳遞到結構體物件中

struct FParam

{

    int32 ParamOne;

    float RetValue;

};

FParam param;

InActor->ProcessEvent(p_Func, &param);