うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】色別の GUIStyle をキャッシュするクラス

複数色の GUIStyle を使いまわしたいときに
キャッシュして利用したいので、キャッシュ用クラスを作成してみました

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public static class ColorLabel
{
    private static Dictionary<Color, GUIStyle> _dic = new Dictionary<Color, GUIStyle>();

    internal static GUIStyle Get(Color color)
    {
        if (!_dic.ContainsKey(color))
        {
            var style = new GUIStyle(EditorStyles.label);
            style.normal.textColor = color;
            _dic.Add(color, style);
        }

        return _dic[color];
    }
}

使い方

LabelField等 GUIStyle を利用するものに対して指定しれあげれば使えます

EditorGUILayout.LabelField("Red", ColorLabel.Get(Color.red));
EditorGUILayout.LabelField("Yellow", ColorLabel.Get(Color.yellow));