Unreal Engine 5 の備忘録

ChatGPT に解説してもらいながらContent Examplesの内容を把握する

 

■Blueprint Communication

Blueprint同士を通信させる方法について

Cast/Event Dispatcher/Blueprint Interface

 

①Cast

▼概要

特定のBlueprint にCastして関数や変数に直接アクセスする方法

▼Castのメリット

・簡単でわかりやすい

・呼び出す関数や変数にそのままアクセスできる

▼Castのデメリット

・相手のクラスが固定される

・クラスが違うと使えない

・Cast先がNULLだと処理失敗する

▼向いている場面

・小規模なやり取りや、確実に1対1で通信するようなケース

 

②Event Dispatcher

▼概要

あるBlueprintがイベントを発火し、それを他のBlueprintが「Bind(登録)」して

受け取る方法。

※呼び出し元(Callする側)は反応する人を不特定で投げかけるイメージ
 呼び出し先でどのアクターのEvent Dispatcherに反応するか指定する
 →このイベントが呼ばれたら自分が反応しますよということを登録(Bind)する

▼Event Dispatcherのメリット

・呼び出し元(Callする側)は受け手(呼び出し先)を知らなくていい

・Level Blueprintや他のBlueprintからBindして柔軟に対応可能

・複数の受け手に同時に通知できる

▼Event Dispatcherのデメリット

・最初(?)にBindしておく必要がある(タイミングが重要)

・やや構造が複雑になる

・Bind先が見えにくく、追いにくい場合がある

▼向いている場面

・複数のオブジェクトに通知を送りたい時

・柔軟なイベント連携をしたい時

 

③Blueprint Interface

▼概要

共通の「Interface(関数名)」を定義して、それを各Blueprintで実装することでCastせずに関数を呼び出せる。

▼Blueprint Interfaceのメリット

・クラスを問わず同じ関数名で呼び出せる(Cast不要)

・拡張性が非常に高い(新しいBlueprintにもすぐ対応できる)

・大量のアクターに同じ命令を送りやすい

▼Blueprint Interfaceのデメリット

・Interfaceの設計が必要(関数名・引数の定義など)

・実装が無いと呼び出しても何も起きない(エラーにはならない)

▼向いている場面

・複数の異なるBlueprintをまとめて制御したい場合

・継承関係のないBlueprintに共通の処理をさせたい時