Menu
CoddyTech

Livello successivo

Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 19 di 56.

Ogni scena nell’elenco delle scene della build ha un numero, il suo indice di 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 ordinati nell’elenco, il livello successivo è l’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 test è 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 uno script di uscita serve per tutti i livelli e nessuno di essi specifica il nome di una scena. Per aggiungere un livello, aggiungi la sua scena all’elenco; per cambiare l’ordine, trascina le scene nell’elenco.

challenge icon

Sfida

Facile

La build elenca quattro scene: Menu (indice 0), poi Level1, Level2 e Level3. Il pulsante Play del Menu apre Level1 e le frecce permettono di muovere il Player (entrambi sono già pronti). Ogni livello ha un Goal dorato con lo script Goal. Scrivilo senza nominare alcuna scena:

  • In Start, mostra in levelText il numero di questo livello e il numero di livelli, come Level 2 of 3. Il Menu non è un livello.
  • Quando il Player (con il tag Player) raggiunge il goal, carica il livello successivo nell'elenco. Dopo l'ultimo livello, torna al Menu.

Premi Play, completa tutti e tre i livelli, poi premi Check.

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
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Creare veri giochi