void OnDestroy()
 {
     if (m_Instance == this)
     {
         m_Instance = null;
     }
 }
        /// <summary>
        /// エンハンスドシーンマネージャのインスタンスを破棄する
        /// </summary>
        public static void Delete()
        {
            if (m_Instance != null)
            {
                if (Application.isPlaying == false)
                {
                    DestroyImmediate(m_Instance.gameObject);
                }
                else
                {
                    Destroy(m_Instance.gameObject);
                }

                m_Instance = null;
            }
        }
        //-----------------------------------------------------------------

        void Awake()
        {
            // 既に存在し重複になる場合は自身を削除する
            if (m_Instance != null)
            {
                GameObject.DestroyImmediate(gameObject);
                return;
            }

            EnhancedSceneManager tInstanceOther = GameObject.FindObjectOfType <EnhancedSceneManager>();

            if (tInstanceOther != null)
            {
                if (tInstanceOther != this)
                {
                    GameObject.DestroyImmediate(gameObject);
                    return;
                }
            }

            //-----------------------------
            // Awake 内でマニュアルで実行した場合とスクリプトで実行した場合の共通の処理を行う必要がある

            m_Instance = this;

            // シーン切り替え時に破棄されないようにする(ただし自身がルートである場合のみ有効)
            if (transform.parent == null)
            {
                DontDestroyOnLoad(gameObject);
            }

            //-----------------------------

            // 原点じゃないと気持ち悪い
            gameObject.transform.localPosition = Vector3.zero;
            gameObject.transform.localRotation = Quaternion.identity;
            gameObject.transform.localScale    = Vector3.one;

            //-----------------------------

            // 現在のシーン名を保存する
            history.Add(UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
        }
        //---------------------------------------------------------

        //---------------------------------------------------------

        /// <summary>
        /// エンハンスドシーンマネージャのインスタンスを生成する
        /// </summary>
        /// <returns>エンハンスドシーンマネージャのインスタンス</returns>
        public static EnhancedSceneManager Create(Transform tParent = null)
        {
            if (m_Instance != null)
            {
                return(m_Instance);
            }

            // オブジェクトが非アクティブだと検出されないのでオブジェクトを非アクティブにしてはならない
            // この判定は必須で mInstance は static であるためシーンの最初はオブジェクトが存在しても null になっている
            m_Instance = GameObject.FindObjectOfType <EnhancedSceneManager>();
            if (m_Instance == null)
            {
                GameObject tGameObject = new GameObject("EnhancedSceneManager");
                if (tParent != null)
                {
                    tGameObject.transform.SetParent(tParent, false);
                }

                tGameObject.AddComponent <EnhancedSceneManager>();
            }

            return(m_Instance);
        }