コガネブログ

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

【Unity】ゲームオブジェクトのアクティブを using で元に戻せるクラス

ソースコード

using System;
using UnityEngine;

namespace Kogane
{
    public sealed class GameObjectSetActiveScope : IDisposable
    {
        private readonly GameObject m_gameObject;
        private readonly bool       m_oldIsActive;

        public GameObjectSetActiveScope
        (
            GameObject gameObject,
            bool       isActive
        )
        {
            m_gameObject  = gameObject;
            m_oldIsActive = gameObject.activeSelf;

            m_gameObject.SetActive( isActive );
        }

        public void Dispose()
        {
            m_gameObject.SetActive( m_oldIsActive );
        }
    }
}

使用例

using ( new GameObjectSetActiveScope( gameObject, false ) )
{
}