4
4

More than 5 years have passed since last update.

エディタの処理としてブループリント関数を C++ から実行する方法

Posted at

コンストラクションスクリプトがゲーム、エディタ問わずに実行されることを利用して、エディタで実行するイベントとして、ブループリントの関数を C++ に設定することができるようになっています。

以下がその例です。
image

これはアセットのロードが終わったら C++ から実行されるイベントとして、ブループリントで定義されている OnLoaded 関数を設定する処理です。

コンストラクションスクリプトを使えば、このようなことができるようになっているのですが、ゲームが実行状態でない時にはブループリント関数は実行できないようになっています。

では、どうすれば実行できるようになるか?
それは、FEditorScriptExecutionGuard という構造体を使えば解決できます。

void RunBlueprintFunctionByEditor(FDynamicDelegate Delegate)
{
    FEditorScriptExecutionGuard Guard;
    Deleagate.ExecuteIfBound();
}

このように、デリゲータの実行関数と同じスコープ内にこの構造体の変数を定義すれば、エディタの処理中でもブループリント関数が実行できるようになります。

4
4
0

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
  3. You can use dark theme
What you can do with signing up
4
4