Menu
CoddyTech

Eine Szene laden

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

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 Schaltfläche „Spielen“ dieses Menüs, die im Inspector verbunden ist, ö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 stehen: In Unity 6 findest du sie unter File > Build Profiles in der Scene List (in älteren Versionen heißt das Fenster Build Settings). Der Name muss genau 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. Zuerst wird der Rest des aktuellen Frames ausgeführt, sodass Zeilen nach LoadScene weiterhin ausgeführt werden; zu Beginn des nächsten Frames zerstört Unity alle Objekte der alten Szene und erstellt die neue, deren Skripte erneut mit Awake und Start beginnen.

challenge icon

Aufgabe

Einfach

Lass jedes Portal die Szene laden, die sein sceneName angibt.

  1. Füge oben in Portal.cs using UnityEngine.SceneManagement; hinzu.
  2. Schreibe void OnTriggerEnter(Collider other): Rufe bei other.CompareTag("Player") SceneManager.LoadScene(sceneName); auf.

Drücke „Spielen“ und gehe in jedes Portal: Desert, Hub und Glacier werden der Reihe nach geladen. Drücke dann „Prüfen“.

Probier es selbst

using UnityEngine;

public class Portal : MonoBehaviour
{
    public string sceneName;

    // Wenn der Spieler eintritt, lade die Szene mit dem Namen sceneName
}

Alle Lektionen in Echte Spiele entwickeln

Übe selbstständig: Unity-Playground