【Unity】Hierarchy でオブジェクトのコンポーネント一覧をアイコン表示【エディター拡張】

Hierarchyでコンポーネント一覧をアイコン表示

はじめに

Unity の Hierarchy 上で、オブジェクトに付随するコンポーネント一覧をアイコンで表示するエディター拡張の紹介です。

Unity 環境
Unity 2020.2.0f1

拡張の見た目

オブジェクトのコンポーネント一覧がアイコン形式で表示されています。

コンポーネント一覧がアイコン形式で表示

コード紹介

using UnityEngine;
using UnityEditor;

public static class HierarchyGUI_ShowComponent
{
    private const int ICON_SIZE = 16;

    [InitializeOnLoadMethod]
    private static void Initialize()
    {
        EditorApplication.hierarchyWindowItemOnGUI += OnGUI;
    }
    
    private static void OnGUI(int instanceID, Rect selectionRect)
    {
        // instanceID をオブジェクト参照に変換
        var go = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
        if (go == null)
        {
            return;
        }

        // オブジェクトが所持しているコンポーネント一覧を取得
        var components = go.GetComponents<Component>();
        if (components.Length == 0)
        {
            return;
        }

        selectionRect.x = selectionRect.xMax - ICON_SIZE * components.Length;
        selectionRect.width = ICON_SIZE;

        foreach (var component in components)
        {
            // コンポーネントのアイコン画像を取得
            var texture2D = AssetPreview.GetMiniThumbnail(component);

            GUI.DrawTexture(selectionRect, texture2D);
            selectionRect.x += ICON_SIZE;
        }
    }
}

補足情報

AssetPreview.GetMiniThumbnail でアイコン画像を取得しています。

 var texture2D = AssetPreview.GetMiniThumbnail(component)

このアイコンは Project ビューInspector ビューで表示されているものと同じです。

Project ビュー
Inspector ビュー

関連記事

HierarchyからオブジェクトのON/OFFを切り替える 【Unity】Hierarchy からオブジェクトの ON/OFF を切り替える拡張機能【エディター拡張】