Menu
CoddyTech

Następny poziom

Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 19 z 56.

Każda scena na liście scen kompilacji ma numer, czyli indeks kompilacji: 0 dla pierwszej, 1 dla następnej itd. LoadScene przyjmuje ten numer, a także nazwę, a SceneManager.sceneCountInBuildSettings podaje, ile scen zawiera lista. Gdy poziomy są uporządkowane na liście, następny poziom ma indeks aktywnej sceny plus 1. To wyjście go wczytuje, a po ostatnim poziomie zatrzymuje działanie:

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!");
    }
}

Przy czterech scenach indeksy wynoszą od 0 do 3, a sceneCountInBuildSettings ma wartość 4, więc na ostatnim poziomie next wynosi 4, czyli jest o jeden większe od ostatniego indeksu. Dlatego warunek sprawdza next < sceneCountInBuildSettings: LoadScene(4) nie wczytałoby żadnej sceny i wyświetliłoby błąd Unity Cannot load scene: Invalid scene name (empty string) and invalid build index 4.

Jeden skrypt wyjścia obsługuje teraz każdy poziom, a żaden z nich nie podaje nazwy sceny. Aby dodać poziom, dodajesz jego scenę do listy; aby zmienić kolejność, przeciągasz sceny w inne miejsca na liście.

challenge icon

Wyzwanie

Łatwy

Kompozycja zawiera cztery sceny: Menu (indeks 0), a następnie Level1, Level2 i Level3. Przycisk Play w Menu otwiera Level1, a strzałki poruszają Playerem (oba elementy są gotowe). Każdy poziom ma złoty cel ze skryptem Goal. Napisz go bez podawania nazwy żadnej sceny:

  • W Start wyświetl numer bieżącego poziomu i liczbę poziomów w levelText, w postaci Level 2 of 3. Menu nie jest poziomem.
  • Gdy Player (z tagiem Player) dotrze do celu, wczytaj następny poziom z listy. Po ostatnim poziomie wróć do Menu.

Naciśnij Play, przejdź wszystkie trzy poziomy, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;

public class Goal : MonoBehaviour
{
    public TMP_Text levelText;

    void Start()
    {
        // wyświetl "Level 2 of 3": numer tego poziomu i łączną liczbę poziomów
    }

    void OnTriggerEnter(Collider other)
    {
        // gracz dotarł do celu: wczytaj następny poziom albo menu, jeśli był to ostatni poziom
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Tworzenie prawdziwych gier