Hierarchyの表示をカスタムする方法です。
Unity2018.3.1
ソースコード
Hierarchyの表示をカスタムするには、EditorApplication.hierarchyWindowItemOnGUI
にコールバックを登録します。
using UnityEngine; using UnityEditor; public class Example { [InitializeOnLoadMethod] private static void AddHierarchyItemOnGUI() { EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItemOnGUI; } private static void HierarchyWindowItemOnGUI (int instanceID, Rect selectionRect) { var gameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject; // Sceneはreturn if (gameObject == null) { return; } var light = gameObject.GetComponent<Light>(); // ライトじゃなかったらreturn if (light == null) { return; } var so = new SerializedObject(light); so.Update(); // ライトの色のプロパティを描画 selectionRect.xMin += selectionRect.width - 40; var colorProp = so.FindProperty("m_Color"); EditorGUI.PropertyField(selectionRect, colorProp, GUIContent.none); so.ApplyModifiedProperties(); so.Dispose(); } }
InitializeOnLoadMethod
アトリビュートを付けたメソッドはロード時に呼ばれるので、
Unityを開いたときにコールバックが登録される形になります。
結果
今回は対象のGameObject
にLight
コンポーネントが貼られていたら
ライトの色をHierarchyから入力できるようにしています。
参考
editor script that demonstrates how to customize hierarchy window · GitHub