Menu
CoddyTech

Eine Szene laden

Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 17 von 56.

Ein Unity-Spiel ist in Szenen aufgeteilt: ein Menü, jedes Level, der Abspann. Jede Szene ist eine eigene Datei mit eigenen Objekten, und ein Skript wechselt mit SceneManager.LoadScene aus dem Namespace UnityEngine.SceneManagement zu einer anderen Szene. Die Play-Schaltfläche dieses Menüs, die im Inspector verbunden wurde, öffnet das Forest-Level:

using UnityEngine;
using UnityEngine.SceneManagement;

public class MainMenu : MonoBehaviour
{
    public void Play()
    {
        SceneManager.LoadScene("Forest");
    }
}

Unity kann nur Szenen laden, die in der Szenenliste des Builds enthalten sind: In Unity 6 findest du diese unter File > Build Profiles im Bereich Scene List (in älteren Versionen heißt das Fenster Build Settings). Der Name muss exakt dem Namen der Szenendatei entsprechen. Fehlt eine Szene in der Liste oder enthält der Name einen Tippfehler wie "Forrest", wird nichts geladen und die Console zeigt eine Fehlermeldung an, die mit Scene 'Forrest' couldn't be loaded beginnt und besagt, dass die Szene nicht zum Build hinzugefügt wurde; das Spiel bleibt im Menü.

Der Wechsel erfolgt nicht sofort. Der Rest des aktuellen Frames wird zuerst ausgeführt, daher werden Zeilen nach LoadScene weiterhin ausgeführt; zu Beginn des nächsten Frames zerstört Unity alle Objekte der alten Szene und erstellt die neue, deren Skripte wieder mit Awake und Start beginnen.

challenge icon

Aufgabe

Einfach

Ein Hub mit zwei Portalen. Dieser Build hat drei Szenen: Hub (die erste), Desert und Glacier. Im Hub führt ein Portal zur Wüste und eines zum Gletscher, und jede dieser Szenen hat ein Portal zurück zum Hub. Jedes Portal hat das Skript Portal, und im Inspector wird sceneName auf das Ziel gesetzt. Mit den Pfeiltasten bewegst du den Player (bereit).

Schreibe Portal.cs: Wenn der Player (mit dem Tag Player) in ein Portal läuft, lade die Szene, deren Name in sceneName dieses Portals steht.

Drücke Play, besuche beide Orte und klicke dann auf Check.

Probier es selbst

using UnityEngine;

public class Portal : MonoBehaviour
{
    public string sceneName;

    // Wenn der Spieler hineingeht, lade die Szene mit dem Namen sceneName
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Echte Spiele entwickeln