Riavviare il livello
Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 18 di 60.
Il modo più rapido per ripristinare un livello è caricarlo di nuovo. SceneManager.GetActiveScene() restituisce la scena attualmente aperta, e il suo name (o il suo buildIndex) è ciò che LoadScene richiede. Questo pulsante Restart sul pannello di fine partita richiama:
public void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}Unity distrugge la scena aperta e la ricrea dal file della scena. Ogni oggetto torna al posto in cui la scena lo aveva messo, compresa una cassa rovesciata dal giocatore; ogni campo riacquista il proprio valore nell'Inspector e Awake e Start vengono eseguiti di nuovo. Non serve alcun codice per rimettere ogni cosa al suo posto una per una. Poiché il pulsante richiede la scena attiva invece di un nome come "Level3", lo stesso script riavvia qualsiasi livello in cui venga inserito.
Un campo static non fa parte della scena: appartiene alla classe, quindi un ricaricamento lo lascia invariato. Un private static float bestTime; conserva il tempo migliore tra un riavvio e l'altro, mentre un normale private float time; riparte da 0 con la nuova scena. Anche GameManager.Instance è statico: dopo un ricaricamento punta al GameManager distrutto finché l'Awake del nuovo GameManager non lo imposta.
Sfida
FacileUna caduta dovrebbe riavviare il livello in cui si trova il giocatore e conteggiare la caduta.
- Aggiungi
using UnityEngine.SceneManagement;e modifica il conteggio inprivate static int falls;, così verrà mantenuto al ricaricamento. - In
Update(), quandoplayer.position.y < fallY, eseguifalls++;e caricaSceneManager.GetActiveScene().name.
Premi «Gioca» e cammina oltre il bordo in entrambi i livelli: Falls: 1, poi Falls: 2. Poi premi «Verifica».
Provalo tu
using UnityEngine;
using TMPro;
public class LevelRestart : MonoBehaviour
{
public Transform player;
public TMP_Text fallsText;
public float fallY = -3f;
private int falls;
void Start()
{
fallsText.text = "Falls: " + falls;
}
void Update()
{
// al di sotto di fallY: conta la caduta e riavvia il livello in cui si trova il giocatore
}
}
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