fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE5/UE4 C++でデストラクタ(Destructor)的なタイミングをイベントで処理する(BeginDestroy)

C++でデストラクタ(Destructor)的なタイミングをイベントで処理する方法です。

こちらを参考にさせていただきました。

・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↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/741-20edbdaf

TRACKBACK

PREV | PAGE-SELECT | NEXT