Delegate


概要

イベント通知やコールバック処理を行うための仕組み。 イベント通知では、発行側が受信側の存在を知らなくてもよいため、疎結合を意識した設計が可能となる。 コールバック処理では、関数呼び出しを外部から柔軟に差し替えることができ、機能の拡張性や再利用性が高まる。

デリゲートの種類

種類宣言方法関数の登録方法関数の呼び出し方法
Singlecast・返り値無し  ・DECLARE_DELEGATE(デリゲート名);  ・DECLARE_DELEGATE_OneParam(デリゲート名, 引数1の型);  ・… ・返り値有り  ・DECLARE_DELEGATE_RetVal(返り値の型, デリゲート名);  ・DECLARE_DELEGATE_RetVal_OneParam(返り値の型, デリゲート名, 引数1の型);  ・…・登録  ・BindStatic  ・BindLambda  ・BindWeakLambda  ・BindRaw  ・BindSP  ・BindThreadSafeSP  ・BindUFunction  ・BindUObject ・登録解除  ・Unbind ・登録判定  ・IsBound・Execute ・ExecuteIfBound
Multicast・DECLARE_MULTICAST_DELEGATE(デリゲート名); ・DECLARE_MULTICAST_DELEGATE_OneParam(デリゲート名, 引数1の型); ・…・登録  ・AddStatic  ・AddLambda  ・AddWeakLambda  ・AddRaw  ・AddSP  ・AddThreadSafeSP  ・AddUFunction  ・AddUObject ・登録解除  ・Remove  ・RemoveAll ・登録判定  ・IsBound・Broadcast
Dynamic Singlecast・返り値無し  ・DECLARE_DYNAMIC_DELEGATE(デリゲート名);  ・DECLARE_DYNAMIC_DELEGATE_OneParam(デリゲート名, 引数1の型, 引数1の名前);  ・… ・返り値有り  ・DECLARE_DYNAMIC_DELEGATE_RetVal(返り値の型, デリゲート名);  ・DECLARE_DYNAMIC_DELEGATE_RetVal_OneParam(返り値の型, デリゲート名, 引数1の型, 引数1の名前);  ・…・登録  ・BindDynamic ・登録解除  ・Unbind ・登録判定  ・IsBound・Execute ・ExecuteIfBound
Dynamic Multicast・DECLARE_DYNAMIC_MULTICAST_DELEGATE(デリゲート名); ・DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(デリゲート名, 引数1の型, 引数1の名前); ・…・登録  ・AddDynamic  ・AddUniqueDynamic ・登録解除  ・RemoveDynamic ・登録判定  ・IsBound  ・IsAlreadyBound・Broadcast
マルチキャストデリゲートは、複数の関数を登録することができる。 ダイナミックデリゲートは、シリアライズされるためリフレクションを通してBP上でも使用することができる。

ペイロードデータ

用意されたデリゲートの引数とは別に、関数登録時に「あらかじめ渡しておく固定の引数」を指定することができる。 この機能はシングルキャストデリゲートでのみ使用可能である。

使用例

キャラクターが近くのドアの開閉を検知する