Standard-Inspector in eigenen Editor integrieren
Schreibt man eine Erweiterung für den Unity-Editor, so kann es vorkommen, dass man teils eigene GUILayouts zeichnet, teils aber die selbe Funktionalität wie der Standard-Inspector benötigt. Leider ist es nicht ohne weiteres möglich, den Standard-Inspector in ein eigenes EditorWindow zu integrieren, obwohl das mit den sehr sequentiell angelegten GUI-Funktionen doch eigentlich kein großes Problem sein sollte.
So bindest Du den Inspector für Deinen Editor ein
Beim Blick in den Code stellt sich erfreulicherweise heraus, dass sich Editor-Felder des Standard-Inspectors recht einfach zu generieren sind:
//-- Draw default inspector editor inside custom EditorWindow code --
SerializedObject obj = new UnityEditor.SerializedObject( ... ); //...=i.e. a Component instance
EditorGUI.BeginChangeCheck();
obj.Update();
SerializedProperty iterator = obj.GetIterator();
bool enterChildren = true;
while (iterator.NextVisible(enterChildren))
{
if (iterator.type!="PPtr<MonoScript>") //optional line: Skip the Script field
{
EditorGUILayout.PropertyField(iterator, true, new GUILayoutOption[0]);
enterChildren = false;
}
}
obj.ApplyModifiedProperties();
EditorGUI.EndChangeCheck();
Hinweis: Ich habe keinen tiefergehenden Einblick in die internen Abläufe des Unity-Editors. Es kann daher sein, dass obiger Code nachteilige Seiteneffekte hat. Ich weiß es schlicht nicht und kann nur sagen, dass es augenscheinlich zumindest funktioniert.