Menu
CoddyTech

Il punteggio

Lezione 11 di 14 del corso Gioco in Unity: Snake 3D di Coddy.

Il punteggio aumenta in GameManager, ma nessuno può vederlo. Un testo TextMeshPro nell’angolo in alto a sinistra lo mostra: un campo TMP_Text impostato nell’Inspector, il cui text viene scritto dal codice.

Scrivi il testo nello stesso punto in cui cambia il numero, dopo la modifica. Così lo schermo non rimane mai indietro rispetto al punteggio. Un negozio aggiorna le sue monete allo stesso modo:

public void Buy(int price)
{
    coins -= price;
    coinsText.text = "Coins: " + coins;
}

Imposta il testo anche una volta in Start(), così il primo fotogramma mostra il punteggio effettivo, qualunque cosa dica il testo nella scena.

challenge icon

Sfida

Medio
  1. In GameManager, aggiungi using TMPro; e public TMP_Text scoreText;. La scena lo imposta su ScoreText, in alto a sinistra.
  2. In Start(), mostra Score: 0.
  3. In Eat(), mostra il nuovo punteggio, come Score: 3 dopo il terzo cibo.

Premi Play e mangia, poi premi Check.

Provalo tu

using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    public Snake snake;
    public GameObject foodPrefab;
    private Transform food;
    private int score;

    void Awake()
    {
        Instance = this;
    }

    void Start()
    {
        food = Instantiate(foodPrefab).transform;
        MoveFood();
    }

    public bool IsFood(Vector3 cell)
    {
        return cell == food.position;
    }

    public void Eat()
    {
        score++;
        MoveFood();
    }

    void MoveFood()
    {
        List<Vector3> free = new List<Vector3>();
        for (int x = -snake.edge; x <= snake.edge; x++)
        {
            for (int z = -snake.edge; z <= snake.edge; z++)
            {
                Vector3 cell = new Vector3(x, 0f, z);
                if (!snake.Occupies(cell))
                {
                    free.Add(cell);
                }
            }
        }
        food.position = free[Random.Range(0, free.Count)];
    }
}
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 Gioco in Unity: Snake 3D