私は Unity エディターの拡張に非常に慣れていないため、階層内の選択されたオブジェクトを強調表示するこのスクリプトをまとめました。問題は、私がエディターにいて、スタック (シーン名) の一番上がツリーに表示されると、階層全体が見えなくなることです! 下にスクロールしてシーン名が見えなくなると、自動的に修正されます。何が起こっているのかをよりよく理解できるように、画像を添付しました。オブジェクトがたくさんある場合、この問題は軽微ですが、新しいシーンでは使用できません。
[InitializeOnLoad]
public class HierarchyHighlighter
{
static HierarchyHighlighter()
{
EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItem_CB;
}
private static void HierarchyWindowItem_CB(int selectionID, Rect selectionRect)
{
Object o = EditorUtility.InstanceIDToObject(selectionID);
if ((o as GameObject).GetComponent<HierarchyHighlighterComponent>() != null)
{
HierarchyHighlighterComponent h = (o as GameObject).GetComponent<HierarchyHighlighterComponent>();
if (h.highlight)
{
if (Event.current.type == EventType.Repaint)
{
GUI.backgroundColor = h.color;
GUI.Box(selectionRect, "");
GUI.backgroundColor = Color.white;
EditorApplication.RepaintHierarchyWindow();
}
}
}
}
}
コンソールには、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」と表示されます。
画像: 正常に機能しています
ご協力ありがとうございました!