Beispiel: Eigene Komponentenliste mit Standard-Editor für eine ausgewählte Komponente.

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.

Beispiel: Eigene Komponentenliste mit Standard-Inspector für eine ausgewählte Komponente.
Beispiel: Eigene Komponentenliste mit Standard-Inspector für eine ausgewählte Komponente.

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.