目次
はじめに
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 ビューで表示されているものと同じです。


関連記事

Unityの教科書 Unity 2021完全対応版 2D&3Dスマートフォンゲーム入門講座
いちばん売れているUnity入門書が最新バージョンに対応 最新環境でゲーム制作を楽しく体験しましょう! ■本書の特徴 ●初めてゲーム制作にチャレンジする人に最適! 最初は簡単な2Dゲームの制作からスタートし、徐々に難しいゲームへと進めていきます。サンプルゲームの制作を通じて、Unityの機能と、ゲームを作るための知識が自然と身に付きます。 ●プログラムの書き方がわからなくても大丈夫! C#の基礎知識も掲載しているので、プログラミング経験のまったくない人でも、安心して学習を開始することができます。 ●ゲームを面白くするためのヒントを掲載! Unityの使い方だけでなく、ゲームの設計方法、レベルデザインなど、ゲームを面白く作るための知識も紹介しています。
作って学べる Unity 本格入門 [Unity 2021対応版] 作って学べる開発入門
本書はUnityでゲーム開発を行いたい人を対象に、1つのゲームを制作する流れを通してUnity 2021の操作が学べる入門解説本です。本書内で武器などを調達し、食べ物を求めながら冒険し、武器でモンスターと戦う3Dアクションゲームを制作していきます。本格的なゲームを実際に制作しながらUnityの使い方を学べますので、楽しみながら学びことができ、かつ実践的なテクニックも身につけることができます。
新・標準プログラマーズライブラリ なるほどなっとく C#入門
本書は、プログラミングの知識・経験がなくてもC#の基本文法を身につけることができる入門書です。 そのために、「初心者に理解して身につけてほしい機能を厳選し、ポイントを絞る」 「C#になぜその機能があるのか、どんな場面で使うのかという点も納得できる」という方針で解説しています。 C#の文法は膨大ですが、これから学ぼうとする方は、すべてを覚える必要はありません。 本書を通して、「なぜ」という疑問をひとつひとつ解消しながら、 利用頻度の高い文法をしっかりと自分のものにすることができます。