はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】ProjectWindowのエディタ拡張で色をつける際に色が暗くなってしまう問題の対処法

はじめに

EditorApplication.projectWindowItemOnGUIを利用することでProject Windowに色をつける事ができます。

public static class ProjectWindowColorizer
{
    [InitializeOnLoadMethod]
    private static void Init()
    {
        EditorApplication.projectWindowItemOnGUI += OnGUI;
    }

    private static void OnGUI(string guid, Rect selectionRect)
    {
        var originalColor = GUI.color;
        
        // 色をつける
        GUI.color = Color.red;
        GUI.Box(selectionRect, string.Empty);

        GUI.color = originalColor;
    }
}
実際に描画された様子

ただなんか色が暗いんですよね...。おそらく背景の色が混ざってしまっているのかなと思います。

この対処法を見つけたので備忘録もかねて書き残しておきたいと思います。

環境

Unity2023.2.0b17

方法

GUIStyle.normal.backgroundTexture2Dを設定したGUIStyleを適応すればOKです。

private static void OnGUI(string guid, Rect selectionRect)
{
    var originalColor = GUI.color;
        
    // Alpha値を小さくしないと文字が見えないので下げる
    GUI.color = new Color(1, 0, 0, 0.2f);
    var style = new GUIStyle
    {
        normal =
        {
            background = Texture2D.whiteTexture
        }
    };
    GUI.Box(selectionRect, string.Empty, style);
        
    GUI.color = originalColor;
}
描画された様子

ただGUIStyleState.backgroundが文字・アイコンの前に描画されているせいで、Alpha値を下げてあげないと見えなくなってしまうので注意してください。

さいごに

ProjectWindowがIMGUIからUI Toolkitに移行してくれれば簡単なんですけどね...。正直IMGUI使いにくいので、特にエディタのUIは早く移行してほしいです。