Menu
CoddyTech

Nächstes Level

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

Jede Szene in der Szenenliste des Builds hat eine Nummer, ihren Build-Index: 0 für die erste, 1 für die nächste und so weiter. LoadScene akzeptiert diese Nummer ebenso wie einen Namen, und SceneManager.sceneCountInBuildSettings gibt an, wie viele Szenen die Liste enthält. Wenn die Level in der Liste der Reihe nach angeordnet sind, ist das nächste Level der Index der aktiven Szene plus 1. Dieser Ausgang lädt es; nach dem letzten Level hält er an:

void OnTriggerEnter(Collider other)
{
    if (!other.CompareTag("Player")) return;
    int next = SceneManager.GetActiveScene().buildIndex + 1;
    if (next < SceneManager.sceneCountInBuildSettings)
    {
        SceneManager.LoadScene(next);
    }
    else
    {
        Debug.Log("You finished the game!");
    }
}

Bei vier Szenen reichen die Indizes von 0 bis 3 und sceneCountInBuildSettings ist 4. Im letzten Level ist next also 4, eine Position hinter dem Ende. Deshalb lautet die Prüfung next < sceneCountInBuildSettings: LoadScene(4) würde nichts laden und Unitys Fehler Cannot load scene: Invalid scene name (empty string) and invalid build index 4 protokollieren.

Ein einziges Ausgangsskript funktioniert jetzt für jedes Level, und keines davon benennt eine Szene. Um ein Level hinzuzufügen, fügst du dessen Szene der Liste hinzu; um die Reihenfolge zu ändern, ziehst du die Szenen in der Liste an die gewünschten Stellen.

challenge icon

Aufgabe

Einfach

Der Build listet vier Szenen auf: Menu (Index 0), dann Level1, Level2 und Level3. Die Schaltfläche Play im Menü öffnet Level1, und die Pfeiltasten bewegen den Player (beides ist bereits eingerichtet). Jedes Level hat ein goldenes Goal mit dem Skript Goal. Schreibe es, ohne eine Szene beim Namen zu nennen:

  • Zeige in Start die Nummer dieses Levels und die Anzahl der Level in levelText an, als Level 2 of 3. Das Menü ist kein Level.
  • Wenn der Player (mit dem Tag Player) das Ziel erreicht, lade das nächste Level in der Liste. Nach dem letzten Level gehst du zurück zum Menü.

Drücke Play, spiele alle drei Level durch und drücke dann Check.

Probier es selbst

using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;

public class Goal : MonoBehaviour
{
    public TMP_Text levelText;

    void Start()
    {
        // Zeige "Level 2 of 3" an: die Nummer dieses Levels und die Gesamtzahl der Level
    }

    void OnTriggerEnter(Collider other)
    {
        // Der Spieler hat das Ziel erreicht: Lade das nächste Level oder nach dem letzten Level das Menü
    }
}
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