search
LoginSignup
2

More than 3 years have passed since last update.

Organization

[UE4] 関数を文字列で呼び出して実行する

UE4 は様々なリフレクション的コードを自動生成し、それを利用して Blueprint の実行やオブジェクトのロードなどが行われています。

今回はこの仕組を利用して、C++コードで関数を文字列で呼び出してみます。

リフレクションコードの生成

リフレクションコードを生成させるには、 UCLASS(...)UFUNCTION(...) マクロを利用します。

UCLASS()
class FunctionTest: public UObject
{
    GENERATED_BODY()

protected:
    UFUNCTION()
    void CallableFunction(const FString& arg0)
    {
        UE_LOG(LogTemp, Log, TEXT("CallableFunction: %s"), *arg0);
    }
};

リフレクションを使って呼び出し

auto Obj = NewObject<FunctionTest>();
FName FuncName = TEXT("CallableFunction");
check(Obj);
auto FuncDelegate = TBaseDelegate<void, const FString>::CreateFunction(Obj, FuncName);
FuncDelegate.ExecuteIfBound(TEXT("hogehoge"));

デバッグ用機能などで便利かもしれない。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2