Standard-Inspector in eigenen Editor integrieren

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

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.

Dr. René Bühling

Hi, mein Name ist René und ich möchte Dir dabei helfen, deinen Traum vom eigenen Computerspiel Wirklichkeit werden zu lassen. Mein erstes kommerziell veröffentlichtes Spiel habe ich Mitte der 1990er Jahre als Hobby-Projekt mit einem Basic-Dialekt unter Windows entwickelt. Seither verfolge ich das Thema Spieleentwicklung in Hobby, Studium und Beruf. Ich habe über 20 Jahre Erfahrung in allen Phasen des Entwicklungsprozesses, die ich gerne mit dir teilen möchte.