Mit Editor-Skripten schneller in Unity Szenen wechseln

Sign in to queue

Description

Wir wissen mittlerweile, dass Unity-Spiele vor allem auf Szenen aufbauen - und haben eben jene auch bereits bei unserem ersten kleinen Unity-Tutorial angelegt und verwendet.

Ich gebe euch recht, wenn ihr jetzt sagt, dass ihr für dieses Tutorial sicherlich keine Abkürzung benötigt, um schneller auf Spielszenen zugreifen zu können. Bei diesem Spiel ging es auch eher darum, die ersten Schritte mit Unity zu wagen - später werdet ihr schnell feststellen, dass ihr sehr sehr viele verschiedene Szenen, aber auch sonstige Assets, Skripte etc. anlegen werdet und die Projektübersicht irgendwann sehr ... unübersichtlich wird.

Um trotzdem schnell zwischen Szenen wechseln zu können, könnt ihr euch der Unity Editor-Skripte bedienen.

1. Legt im Hauptverzeichnis (unter "Assets") einen Ordner Editor an

Das ist wichtig, da Unity eure Bemühungen sonst schlichtweg ignoriert. Also, schön brav den Editor-Ordner anlegen, ungefähr so:

Generic Episode Image

2. In diesem Ordner, legt ein neues C#-Skript an (ihr könnt auch JavaScript verwenden - meine Beispiele und der Code beziehen sich ausschließlich auf C#)

Nennt dieses zum Beispiel "OpenScene"

Generic Episode Image.

3. Öffnet das Skript

4. Fügt dem Skript ganz oben folgendes Statement hinzu:

using UnityEditor;

Generic Episode Image

Jetzt seid ihr gewappnet, um eure ersten Schritte mit der Unity-Modifizierung zu gehen :) Jetzt wird's ernst!

Die bestehenden Methoden,

void Start()
{

}

void Update()
{

}

könnt ihr samt Kommentierungen löschen, die sind völlig irrelevant.

5. Fügt einen neuen Menü-Eintrag hinzu

direkt unter

public class OpenScene : MonoBehaviour {

tippt ihr folgende Zeile ein:

[MenuItem("OpenScene/Start Scene")]

Zur Erklärung:

MenuItem legt einen neuen Menüeintrag fest, dessen hierarchische Struktur durch die Zeichenkette / Strings in den Klammern genauer definiert wird: OpenScene ist der Eintrag, den ihr auf gleicher Ebene wie File, Window etc. sehen werdet. StartScene wiederum wird als Eintrag unter OpenScene angelegt - das Ergebnis sieht (gegebenenfalls mit etwas Verzögerung...) wiefolgt aus:

Generic Episode Image

Jetzt habt ihr einen Menüeintrag - und der soll jetzt bitteschön auch etwas machen, oder? Es fehlt nicht mehr viel! Als kleine Anmerkung: wir legen die Menüeinträge gerade händisch für existierende Szenen an - sobald ihr weitere Szenen hinzufügt, müsst ihr sie also auch im Skript hinzufügen; das Projekt wird nicht automatisch nach Szenen durchsucht, die dem Menü hinzugefügt werden!

Steuern wir mal eine Beispielszene an. Dazu startet ihr mit einer Methode:

static void StartScene()
{
 
}

 Falls der Eintrag bei euch nicht auftaucht, kann es gut sein, dass ihr das "static" vergessen habt - nur, damit ihr nicht erst eine Stunde suchen müsst, wie ich zu Anfang :D

6. Die aktuelle Szene bei Bedarf speichern lassen

Zwischen den geschweiften Klammern der eben angelegten Methode folgen zwei Zeilen Code, die erste fragt den Benutzer, ob die aktuelle Szene gespeichert werden soll:

 

EditorApplication.SaveCurrentSceneIfUserWantsTo();

Diese Zeile öffnet (im Falle von ungespeicherten Änderungen) folgenden Dialog:

Generic Episode Image

7. Eine andere Szene öffnen

Um jetzt auch noch die neue Szene zu starten, nehmt ihr folgende Zeile, ebenfalls in der StartScene-Methode und direkt nach dem Speichern:

EditorApplication.OpenScene("Assets/Scenes/StartScreen.unity");

EditorApplication.OpenScene ist recht selbsterklärend - die Methode öffnet eine neue Szene.

Der Pfad startet immer mit "Assets/", weil das - auf Projektstruktur betrachtet - der Ordner ist, der als erstes angesteuert werden muss. Wenn ihr im Assets-Hauptverzeichnis auf "Show in Explorer" geht, müsst ihr auch erst auf "Assets" doppelklicken, um in die Ansicht zu gelangen, die ihr in Unity selbst seht.

Der Teil danach hängt davon ab, wie ihr eure Ordnerstruktur angelegt habt; meine Szenen lieben im Unterordner "Scenes" und ich habe meinen Startbildschirm "StartScreen" genannt.

Alle Szenen enden auf die Dateiendung .unity

Am Ende sollte euer Code ungefähr so aussehen:

Generic Episode Image

8. Abspeichern und zurück zu Unity gehen - jetzt könnt ihr das neue Menü ausprobieren.

Viel Spaß!

Tags:

C#, editor, Unity

The Discussion

Add Your 2 Cents