Następny poziom
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 19 z 60.
Każda scena na liście scen kompilacji ma numer, czyli indeks kompilacji: 0 dla pierwszej, 1 dla następnej i tak dalej. LoadScene przyjmuje ten numer oraz nazwę, a SceneManager.sceneCountInBuildSettings podaje, ile scen zawiera lista. Gdy poziomy znajdują się na liście w odpowiedniej kolejności, następny poziom ma indeks aktywnej sceny plus 1. To wyjście wczytuje go, 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 o jeden więcej niż ostatni indeks. 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 na liście.
Wyzwanie
ŁatwySpraw, aby każdy cel otwierał następny poziom.
- W
Start()wyświetl"Level " + level + " of " + levelswlevelText:leveltobuildIndexaktywnej sceny, alevelstoSceneManager.sceneCountInBuildSettings - 1. - W
OnTriggerEnterw przypadku gracza załadujbuildIndex + 1lub0(menu), gdy ta wartość nie jest mniejsza niżsceneCountInBuildSettings.
Naciśnij „Graj” i ukończ wszystkie trzy poziomy: wrócisz do menu. Następnie naciśnij „Sprawdź”.
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 to był ostatni poziom
}
}
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 poziomu2Przyciski 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 bankuPoćwicz samodzielnie: Edytor online Unity