Caricare una scena
Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 17 di 56.
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 Play di questo menu, configurato 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, oppure 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 resta nel menu.
Il passaggio non è istantaneo. Prima viene eseguito il resto del frame corrente, quindi le righe successive a LoadScene vengono comunque eseguite; all'inizio del frame successivo Unity distrugge tutti gli oggetti della scena precedente e crea quelli della nuova, i cui script ripartono da Awake e Start.
Sfida
FacileUn hub con due portali. Questa build ha tre scene: Hub (la prima), Desert e Glacier. Nell'Hub, un portale conduce al Desert e uno al Glacier, e ciascuno di questi ha un portale che riporta all'Hub. Ogni portale ha lo script Portal e, nell'Inspector, sceneName è impostato sulla destinazione. Le frecce muovono il Player (già pronto).
Scrivi Portal.cs: quando il Player (con tag Player) entra in un portale, carica la scena indicata da sceneName di quel portale.
Premi Play, visita entrambi i luoghi, poi premi Check.
Provalo tu
using UnityEngine;
public class Portal : MonoBehaviour
{
public string sceneName;
// quando il giocatore entra, carica la scena chiamata sceneName
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
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 livello10Progetto: Platform 3D
Il percorsoPiattaforme mobili2Pulsanti 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: Corsa infinita
Tre corsieOstacoli in arrivo9Il nuovo sistema di input
Due sistemi di inputTastiera e mousePremuto in questo frameAzioni di inputRiepilogo: cambio di input