UE5/UE4 C++でデストラクタ(Destructor)的なタイミングをイベントで処理する(BeginDestroy)
こちらを参考にさせていただきました。
・UE4 Unreal C++でデストラクタ
https://papersloth.hatenablog.com/entry/2018/04/13/223631
とのことです。UObjectを継承したクラスではBeginDestroyをOverrideすると良さそうです。
これはオブジェクトがGC用にマークされた状態でも、まだ削除されていないときに呼び出されるものです。
ゲームプレイ機能は後述のEndPlayで解放し、BeginDestroyでオブジェクトが使用していた全リソースを解放します。
ただ、この「BeginDestroy」はBPでは公開されていないので、
基本C++で継承したクラスで実装する以外には方法がなさそうです(見落としていたらごめんなさい)
というわけでこんな感じでヘッダに追加します。
// 継承したクラス
UCLASS()
class ANewActor : public AActor
{GENERATED_BODY()public:// この関数を追加
virtual void BeginDestroy() override;};
実際の処理関数はこんな感じになります。
// 破棄開始
void ANewActor ::BeginDestroy()
{Super::BeginDestroy();}
あまり使う機会はないかもしれませんが、マネージャー系などだと使うのかなと思いました。
ここらへん注意して使っていきたいですね。終了処理を明示的に記述したい場合はEndPlay
デストラクタの代替機能が欲しい場合はBeginDestroy
UObjectを継承したクラスでは基本的にデストラクタを記述する必要はありません。
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑