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.
Sfida
FacileFai in modo che ogni portale carichi la scena indicata dal suo sceneName.
- All’inizio di
Portal.cs, aggiungiusing UnityEngine.SceneManagement;. - Scrivi
void OnTriggerEnter(Collider other): quandoother.CompareTag("Player"), chiamaSceneManager.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
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