Menu
CoddyTech

Caricare una scena

Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 17 di 60.

Un gioco Unity è suddiviso in scene: un menu, ogni livello, i titoli di coda. Ogni scena è un file a sé stante con i propri oggetti e uno script passa a un’altra scena con SceneManager.LoadScene, dallo spazio dei nomi UnityEngine.SceneManagement. Il pulsante «Gioca» di questo menu, collegato nell’Inspector, apre il livello Forest:

using UnityEngine;
using UnityEngine.SceneManagement;

public class MainMenu : MonoBehaviour
{
    public void Play()
    {
        SceneManager.LoadScene("Forest");
    }
}

Unity può caricare solo le scene presenti nell’elenco delle scene della build: in Unity 6 si trova in File > Build Profiles, sotto Scene List (nelle versioni precedenti la finestra si chiama Build Settings). Il nome deve corrispondere esattamente a quello del file della scena. Se una scena non è nell’elenco o c’è un errore di battitura, come "Forrest", non viene caricato nulla e la Console mostra un errore che inizia con Scene 'Forrest' couldn't be loaded e indica che la scena non è stata aggiunta alla build; il gioco rimane nel menu.

Il passaggio non è istantaneo. Prima viene eseguito il resto del frame corrente, quindi le righe dopo LoadScene vengono comunque eseguite; all’inizio del frame successivo Unity distrugge tutti gli oggetti della vecchia scena e crea quelli della nuova, i cui script ripartono da Awake e Start.

challenge icon

Sfida

Facile

Fai in modo che ogni portale carichi la scena indicata dal suo sceneName.

  1. All’inizio di Portal.cs, aggiungi using UnityEngine.SceneManagement;.
  2. Scrivi void OnTriggerEnter(Collider other): quando other.CompareTag("Player"), chiama SceneManager.LoadScene(sceneName);.

Premi «Gioca» e attraversa ogni portale: Desert, Hub e Glacier vengono caricati in sequenza. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class Portal : MonoBehaviour
{
    public string sceneName;

    // quando il giocatore entra, carica la scena chiamata sceneName
}

Tutte le lezioni di Creare veri giochi

Esercitati da solo: Playground Unity