UE4、BPでのデストラクタ処理の作り方
アクタ(AActor継承クラス)がDestroyされたときの流れ
- Destroy()呼ばれる
- Destroy()の中でDestroyed()呼ばれる
- Destroyed()の中でReceiveDestroyed()呼ばれる
- Destroyed()の中でOnDestroyed()呼ばれる
BPではReceiveDestroyedとOnDestroyedを使用する、これらの関数はC++側には実装はない
ReceiveDestroyed
BlueprintImplementableEventとして定義されているので、BPでオーバーライドして使用する
DisplayName = “Destroyed”となっているので、BPでは"Event Destroyed"ノードとして現れる(C++のDestroyed()とは別)
参考
Unreal Engine | ゲームプレイ要素をブループリントに公開する
OnDestroyed
イベントディスパッチャー(DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam)として定義されていて、BPではバインドして使用する
ReceiveDestroyedとの違いは、DestroyedされたActorがポインタとして返ってくるのでどうこうしたいならこちらを使用する
参考
Unreal Engine | マルチキャスト デリゲート
実行順序は、ReceiveDestroyedのほうが一行だけ先に呼ばれる