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上でも使用することができる。
ペイロードデータ
用意されたデリゲートの引数とは別に、関数登録時に「あらかじめ渡しておく固定の引数」を指定することができる。
この機能はシングルキャストデリゲートでのみ使用可能である。
使用例
キャラクターが近くのドアの開閉を検知する