【UE4】インターフェイス機能がなんとなくわかった気がする

概要 

Unreal Engine 4 のインターフェイスの備忘録です。

インターフェイスとは

送受信対象を知らなくても共通のインターフェイスを持っていれば、 ブループリント間での情報の送受信ができます。

イメージとしてはこんな感じです。
f:id:capitao_special:20211127095514p:plain

実装

インターフェイス作成

コンテツブラウザ上で右クリックして新規インターフェイスを作成。 f:id:capitao_special:20211127090749p:plain

インプット、アウトプットを追加。 f:id:capitao_special:20211127095947p:plain

インターフェイス追加

作成したインターフェイス(BITest)をデータ送受信したBPに追加。 ここでは、送信側をレベルBP、受信側を各アクターとしました。
f:id:capitao_special:20211127091119p:plain

送信側設定

「Get All Actors with Interface」を用いて、BITestをインターフェイスに追加したアクターを取得し、関数(Test1)をコールする。

f:id:capitao_special:20211127105231p:plain

受信側設定

返り値がある場合

関数オーバーライドで設定します。
インターフェイスを追加するとマイブループリントのインターフェイスに「Test1」という関数が表示されます。 f:id:capitao_special:20211127105508p:plain

その関数を開いてここで入力する値を設定する。 f:id:capitao_special:20211127105649p:plain

返り値がない場合

カスタムイベントで設定します。
マイブループリントのインターフェイスに「Test2」という関数があるので、右クリックして「イベントを実装」を選択すると、 f:id:capitao_special:20211127110042p:plain

イベントグラフ上にカスタムイベントを作成できます。 f:id:capitao_special:20211127110145p:plain

実行タイミング

インターフェイスの実行タイミングについて調査しました。

BP

「EventBP」:インターフェイスの関数コールするアクター
「ActorBP」 :呼び出される関数があるアクター

「EventBP」

「EventBP」ではTickで関数コールするように設定し、その前後のタイミングがわかるようにログを出力する。またTickGroupは「PostPhysics」に設定。 f:id:capitao_special:20211127112637p:plain f:id:capitao_special:20211127112551p:plain 

「ActorBP」

「ActorBP」ではTick、呼び出される関数にその前後のタイミングがわかるようにログを出力する。またTickGroupは「PrePhysics」に設定。

f:id:capitao_special:20211127111652p:plain f:id:capitao_special:20211127111810p:plain

結果

実行タイミングはインターフェイスの関数コールタイミングです。(あたりまえだよね、、、) f:id:capitao_special:20211127112706p:plain

参考