Menu
CoddyTech

Sopravvivere

Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 47 di 50.

challenge icon

Sfida

Medio

Ultimo passaggio: la partita termina e viene conservato il miglior risultato. Mantieni tutto ciò che hai realizzato nelle lezioni precedenti. La canvas contiene un GameOverPanel nascosto con ResultText, BestText e un RestartButton con l'etichetta Fight again, e l'oggetto GameManager ha il tuo script GameManager, con hero, spawner, gameOverPanel, resultText, bestText e restartButton assegnati nell'Inspector.

  • Hero riceve public event Action Died, che viene generato quando la sua salute raggiunge 0, dopo che si disattiva.
  • In GameManager.cs, aggiungi una classe [System.Serializable] BestRun con public int wave e public int kills.
  • GameManager ascolta l'evento Died dell'eroe e Enemy.Died, che tiene il conto delle uccisioni di questa partita: sottoscrivi gli eventi in OnEnable e annulla la sottoscrizione in OnDisable. In Start carica il miglior risultato da best.json in Application.persistentDataPath con JsonUtility, se il file esiste, nasconde il pannello e imposta restartButton per riavviare il gioco.
  • Quando l'eroe muore, ferma il gioco (Time.timeScale 0). Il risultato della partita è dato dalla Wave dello spawner e dalle uccisioni. È un nuovo record se ha raggiunto un'onda più alta, oppure la stessa onda con più uccisioni: in tal caso diventa il miglior risultato e viene salvato in best.json con JsonUtility.ToJson. Mostra il risultato in resultText, come Wave 2, 7 kills, e il miglior risultato in bestText, come Best: wave 3, 12 kills, poi mostra il pannello.
  • Il riavvio reimposta la scala temporale a 1 e carica di nuovo la scena.

Premi Play e combatti finché non cadi, poi prova a battere il tuo record. Poi premi Check.

Provalo tu

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // Una lezione successiva completerà questa parte: la fine della partita e il miglior risultato.
}

Tutte le lezioni di Architettura dei giochi in Unity