コガネブログ

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

【Unity】変更した GUI.color を簡単に元に戻せるクラス

ソースコード

using System;
using UnityEngine;

public sealed class GUIColorScope : IDisposable
{
    private readonly Color m_oldColor;

    public GUIColorScope( Color color )
    {
        m_oldColor = GUI.color;
        GUI.color = color;
    }

    public void Dispose()
    {
        GUI.color = m_oldColor;
    }
}

使用例

using UnityEditor;
using UnityEngine;

public class Example : EditorWindow
{
    [MenuItem( "Tools/Hoge" )]
    private static void Hoge()
    {
        GetWindow<Example>();
    }

    private void OnGUI()
    {
        GUILayout.Label( "ピカチュウ" );

        using ( new GUIColorScope( Color.red ) )
        {
            GUILayout.Label( "カイリュー" );
        }
        
        GUILayout.Label( "ヤドラン" );

        using ( new GUIColorScope( Color.green ) )
        {
            GUILayout.Label( "ピジョン" );
        }
        
        GUILayout.Label( "コダック" );
    }
}

f:id:baba_s:20200505103646p:plain