コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】一度もアクティブになっていないゲームオブジェクトの OnDestroy は呼ばれない

概要

using UnityEngine;

public sealed class Example : MonoBehaviour
{
    private void OnDestroy()
    {
        Debug.Log( "OnDestroy" );
    }
}

OnDestroy の時にログ出力する自作コンポーネントを
ゲームオブジェクトにアタッチした場合

f:id:baba_s:20220215163258g:plain

そのゲームオブジェクトが一度でもアクティブになったことがあれば
ゲームオブジェクトが削除された時に OnDestroy が呼び出されていることが確認できるが

f:id:baba_s:20220215163308p:plain

そのゲームオブジェクトが一度もアクティブになったことがなければ

f:id:baba_s:20220215163301g:plain

ゲームオブジェクトが削除された時に OnDestroy が呼び出されていないことが確認できる