Поскольку я не уверен, о чем вы спрашиваете, вот несколько разных решений;
Выбор
Если вы просто хотите, чтобы ваши узлы стали фокусом иерархии, то в методе OnGUI вашего настраиваемого окна используйте приведенный ниже код;
[CustomEditor(typeof(NodeManager))]
public class NodeManager : EditorWindow
{
private static NodeManager window;
private Node[] m_nodes;
[MenuItem("Custom Windows/Node Inspector")]
public static void Init()
{
if(window == null)
window = GetWindow<NodeManager>("Node Manager", true, typeof(SceneView));
}
public void OnGUI()
{
m_nodes = GameObject.FindObjectsOfType<Node>();
foreach(Node node in m_nodes)
{
GUILayout.BeginHorizontal();
{
GUILayout.Label(node.name);
if (GUILayout.Button("Select"))
Selection.objects = new Object[] { node.gameObject };
}
GUILayout.EndHorizontal();
}
}
}
Это добавляет кнопку для каждого объекта в вашем настраиваемом окне просмотра, которая затем выберет этот объект в иерархии.
Автоматическая стыковка
Первоначально я нашел второй ответ на этот вопрос, в котором подробно описываются параметров метода GetWindow, и с этим вы можете ясно увидеть, как закрепить окно (я преобразовал его из JS в C # ниже). (Я довольно подробно искал пространства имен UnityEditor
и UnityEditorInternal
, но не смог найти Иерархию или Инспектор).
GetWindow<T>(string title, bool focus, params System.Type[] desiredDockNextTo)
Что мы можем написать для этого примера как;
EditorWindow.GetWindow<NodeInspector>("Node Test", true, typeof(SceneView));
В этом примере окна закрепляются рядом с окном SceneView. Эта функция может быть объединена с методом OnInspectorGUI настраиваемого инспектора для автоматического запуска окна настраиваемого узла , если он еще не открыт.
[CustomEditor(typeof(Node))]
public class NodeInspector : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
NodeManager.Init();
}
}
Извините, если это не то, что вы ищете, если это не так, опишите подробнее, и я исправлю свой ответ, чтобы он лучше соответствовал вопросу. Надеюсь, это помогло.
person
MrDiVolo
schedule
17.04.2016