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.
Wyzwanie
ŁatwyKompozycja 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 postaciLevel 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
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Tworzenie prawdziwych gier
1Tekst na ekranie
Canvas i tekstWyświetlanie wynikuFormatowanie liczbOdliczanie czasuPowtórka: prędkościomierz4Sceny i poziomy
Wczytaj scenęUruchom poziom ponownieNastępny poziomZachowaj między scenamiPodsumowanie: wybór poziomu10Projekt: platformówka 3D
TrasaRuchome platformy2Przyciski i ekrany
Przyciski i onClickLambdyPodłączanie w InspectorzeWłączanie i wyłączanie paneliPaski zdrowiaPodsumowanie: sklep z ulepszeniami5Zapisywanie za pomocą PlayerPrefs
Zapisz liczbęWczytywanie z wartością domyślnąNajlepszy wynikZapisz ustawieniaPodsumowanie: monety w banku