Menu
CoddyTech

Riepilogo: gestore del round

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

Questo capitolo ha dato al gioco un gestore: un singleton a cui gli altri accedono senza un campo e gli stati tra cui passa. Il gestore del round mette entrambi al lavoro.

challenge icon

Sfida

Facile

Completa la raccolta delle monete; SetState è già scritto.

  1. Aggiungi public static RoundManager Instance;, impostandolo in Awake().
  2. In Update(), usa uno switch su state: Ready attende Space; Playing fa il conto alla rovescia di timeLeft, poi passa allo stato Ready successivo oppure a Finished dopo l’ultimo round.
  3. public bool TakeCoin(): solo durante Playing, conteggia la moneta, mostra Coins: 2 e restituisce true. Coin.cs distrugge una moneta conteggiata che il Player tocca.

Premi «Gioca» per tutti e tre i round. Poi premi «Verifica».

Provalo tu

using UnityEngine;
using TMPro;

public enum RoundState { Ready, Playing, Finished }

public class RoundManager : MonoBehaviour
{
    // il singleton: un'Instance statica, impostata in Awake()
    public GameObject readyPanel;
    public GameObject playPanel;
    public GameObject finishedPanel;
    public TMP_Text roundText;
    public TMP_Text coinsText;
    public TMP_Text finalText;
    public int rounds = 3;
    public float roundTime = 4f;
    private RoundState state;
    private int round = 1;
    private int coins;
    private float timeLeft;

    void Start()
    {
        SetState(RoundState.Ready);
    }

    void Update()
    {
        // seleziona in base a state: Ready attende Space; Playing fa il conto alla rovescia
    }

    void SetState(RoundState next)
    {
        state = next;
        readyPanel.SetActive(next == RoundState.Ready);
        playPanel.SetActive(next == RoundState.Playing);
        finishedPanel.SetActive(next == RoundState.Finished);
        if (next == RoundState.Ready) roundText.text = "Round " + round;
        if (next == RoundState.Playing) timeLeft = roundTime;
        if (next == RoundState.Finished) finalText.text = "Coins: " + coins;
    }

    // TakeCoin(): una moneta viene conteggiata solo durante Playing
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Creare veri giochi

Esercitati da solo: Playground Unity