Предлагаю вам вариант простого подкрашивания имен объектов. Кидаем эдитор-скрипт в папку Editor, а монобех - на объект, включаем флажок, задаем нужный цвет.
Из известных ляпов: цвет заливает имя объекта, поэтому держите альфу в районе 0.3f. Исправлять, то бишь - перерисовывать поверх Label, не стал из вопроса лёгкости.
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEditor;
[InitializeOnLoad]
public class HierarchyHighlighter
{
static HierarchyHighlighter()
{
EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItem_CB;
}
private static void HierarchyWindowItem_CB(int selectionID, Rect selectionRect)
{
var o = EditorUtility.InstanceIDToObject(selectionID);
if (o == null) return;
var h = ((GameObject) o).GetComponent<HierarchyHighlighterComponent>();
if (h == null) return;
if (!h.highlight) return;
if (Event.current.type != EventType.Repaint) return;
EditorGUI.DrawRect(selectionRect, h.color);
EditorApplication.RepaintHierarchyWindow();
}
}
using UnityEditor;
[InitializeOnLoad]
public class HierarchyHighlighter
{
static HierarchyHighlighter()
{
EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItem_CB;
}
private static void HierarchyWindowItem_CB(int selectionID, Rect selectionRect)
{
var o = EditorUtility.InstanceIDToObject(selectionID);
if (o == null) return;
var h = ((GameObject) o).GetComponent<HierarchyHighlighterComponent>();
if (h == null) return;
if (!h.highlight) return;
if (Event.current.type != EventType.Repaint) return;
EditorGUI.DrawRect(selectionRect, h.color);
EditorApplication.RepaintHierarchyWindow();
}
}
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEngine;
public class HierarchyHighlighterComponent : MonoBehaviour
{
public bool highlight = false;
public Color color = new Color(0f, 1f, 0f, 0.3f);
}
}
using UnityEngine;
public class HierarchyHighlighterComponent : MonoBehaviour
{
public bool highlight = false;
public Color color = new Color(0f, 1f, 0f, 0.3f);
}
}