#memo

indiedev太郎

UE4、BPでのデストラクタ処理の作り方

アクタ(AActor継承クラス)がDestroyされたときの流れ

  1. Destroy()呼ばれる
  2. Destroy()の中でDestroyed()呼ばれる
  3. Destroyed()の中でReceiveDestroyed()呼ばれる
  4. Destroyed()の中でOnDestroyed()呼ばれる

BPではReceiveDestroyedOnDestroyedを使用する、これらの関数は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のほうが一行だけ先に呼ばれる

https://i.gyazo.com/fdb8fe996a76e190560c43ad147aeccc.png