【Unity】Hierarchy4でstaticなオブジェクトにアイコンを表示する

Unity の AssetStore で有償販売されている Hierarchy4 というアセットを改造して static なゲームオブジェクトにアイコンを表示する方法の紹介です。

元々そういう機能がアセット内に用意されていますがコメントアウトされているので復元して自作のアイコンを設定していきます。

修正後は以下の赤枠のように static なゲームオブジェクトに専用のアイコンが表示されます。

確認環境

  • Unity - 2022.3.24f1
  • Hierarchy 4 - 1.4.2.1

改造手順

ソースコードを変更する

以下の個所にコメントアウトされた実装があるのでコメントインします。

// Hierarchy 4 > Editor > HierarchyEditor.cs
void HierarchyOnGUI(int selectionID, Rect selectionRect)
{
    // ...
    if (settings.displayStaticIcon)
    {
        StaticIcon(); // ここをコメントインする
    }

この状態で Hierarchy に static オブジェクトに真っ黒な Transfrom アイコンが表示されます。

ただ視認性が少し悪いので自作のアイコンを設定したいと思います。

自作のアイコンを表示する

以下にアイコン情報を保存しているアセットがあるので好きなアイコンを設定します。

まずはこんな感じにアイコンを用意して適当なフォルダに入れておきます。static.png という名前で保存します。

画像は次の設定を変更します → Texture Type = Editor GUI and Legacy GUI

次に以下にあるアセットにこのアイコンを登録します。

Hierarchy 4 > Editor > Resources

次に、アイコンを描画している箇所を以下の通り修正します。

// Hierarchy 4 > Editor > HierarchyEditor.cs
void StaticIcon()
{
    if (!hObject.isStatic) return;
    if (currentEvent.type != EventType.Repaint) return;

    Rect rect = hObject.rect;
    rect = RectFromRight(rect, 16, ref widthUse.right);
    // ★以下をコメントアウト
    //Color guiColor = GUI.color;
    //GUI.color = new Color(0.1f, 0.1f, 0.1f, 1f);
    //Texture image = EditorGUIUtility.ObjectContent(null, typeof(Transform)).image;
    //GUI.DrawTexture(rect, image, ScaleMode.ScaleToFit);
    //GUI.color = guiColor;
    // ★新しい行を追加する
    GUI.DrawTexture(rect, resources.GetIcon("static"), ScaleMode.ScaleToFit);

これで冒頭の通り Hierarchy に任意のアイコンが表示されるようになります。