Livello successivo
Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 19 di 60.
Ogni scena nell'elenco delle scene della build ha un numero, il suo indice della build: 0 per la prima, 1 per la successiva e così via. LoadScene accetta quel numero oltre a un nome, e SceneManager.sceneCountInBuildSettings indica quante scene contiene l'elenco. Con i livelli disposti in ordine nell'elenco, il livello successivo corrisponde all'indice della scena attiva più 1. Questa uscita lo carica e, dopo l'ultimo livello, si ferma:
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!");
}
}Con quattro scene, gli indici vanno da 0 a 3 e sceneCountInBuildSettings è 4, quindi nell'ultimo livello next è 4, uno oltre la fine. Ecco perché il controllo è next < sceneCountInBuildSettings: LoadScene(4) non caricherebbe nulla e registrerebbe l'errore di Unity Cannot load scene: Invalid scene name (empty string) and invalid build index 4.
Ora un solo script di uscita serve per tutti i livelli e non ne nomina nessuno. Per aggiungere un livello, aggiungi la relativa scena all'elenco; per cambiare l'ordine, trascina le scene nell'elenco.
Sfida
FacileFai in modo che ogni obiettivo apra il livello successivo.
- In
Start(), mostra"Level " + level + " of " + levelsinlevelText:levelè ilbuildIndexdella scena attiva,levelsèSceneManager.sceneCountInBuildSettings - 1. - In
OnTriggerEnter, per il giocatore, caricabuildIndex + 1oppure0(il menu) quando non è inferiore asceneCountInBuildSettings.
Premi «Gioca» e completa tutti e tre i livelli: tornerai al menu. Poi premi «Verifica».
Provalo tu
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
public class Goal : MonoBehaviour
{
public TMP_Text levelText;
void Start()
{
// mostra "Level 2 of 3": il numero di questo livello e il numero totale di livelli
}
void OnTriggerEnter(Collider other)
{
// il giocatore ha raggiunto l'obiettivo: carica il livello successivo oppure il menu dopo l'ultimo livello
}
}
Tutte le lezioni di Creare veri giochi
1Testo sullo schermo
Canvas e testoMostra il punteggioFormattare i numeriUn timer per il conto alla rovesciaRiepilogo: tachimetro4Scene e livelli
Caricare una scenaRiavviare il livelloLivello successivoMantenere i dati tra le sceneRiepilogo: selezione del livello2Pulsanti e schermate
Pulsanti e onClickLambdaCollegare nell'InspectorPannelli attivi e disattiviBarre della saluteRiepilogo: negozio degli upgrade5Salvare con PlayerPrefs
Salvare un numeroCaricare con un valore predefinitoPunteggio massimoSalvare le impostazioniRiepilogo: monete in banca8Controller del personaggio
CharacterController.MoveGravità manualeSaltoSpingere gli oggettiMuoviti dove guardiRiepilogo: doppio salto3Il gestore del gioco
Uno script gestisce il giocoIl SingletonStati di giocoSelezionare lo statoRiepilogo: gestore del round6Progetto: Runner infinito
Tre corsieOstacoli in arrivo9Il nuovo sistema di input
Due sistemi di inputTastiera e mousePremuto in questo frameAzioni di inputRiepilogo: cambio di inputEsercitati da solo: Playground Unity