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.