Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 ブループリントで関数ポインターやデリゲートのようなことをやる

ゲーム中に呼び出す関数の先を切り替えるようなことをやりたいということはきっとあると思います。UE4の場合はイベントディスパッチャーを利用すると比較的簡単に実現できます。

今回はブループリントでの利用方法を解説しますが、偶然全く同じタイミングでC++を使った解説 id:katze_7514 さんがやられていたので、C++でやりたいという方はそちらを参考に。
katze.hatenablog.jp

イベントディスパッチャーを作る

まずはイベントをバインドするためのイベントディスパッチャー本体を作成しておきます。

f:id:alwei:20160522145432p:plain

特に出力などは必要ありませんが、必要であれば詳細から追加しておきましょう。バインドできるイベントもこれらが一致したもののみとなります。

イベントをバインドして呼び出す

あとは"Bind Event to~"ノードでバインドするイベントを作成します。

f:id:alwei:20160522150056p:plain

バインドするイベントそのものは"Custom Event"として作成して、"Bind Event to~"ノードの"Event"ピンへ接続します。ここではキーボードからそれぞれのイベントのバインドと呼び出しを行っていますが、呼び出し方法はどのようにやっても構いません。

直前で"Unbind all Events from~"としているのは、バインドされたイベントが全て呼び出されるからです。C++の関数ポインターのように呼び出したければ、一度バインド解除をしておく必要があります。

逆にC#のデリゲートのように、複数メソッドを同時に呼び出す必要がある際には何もしなくても複数のイベントが呼び出されますので、この必要はありません。上手く活用すれば柔軟なイベント呼び出しができるでしょう。