Menu
CoddyTech

Il punteggio

Lezione 11 di 14 del corso Gioco 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

Mostra il punteggio sullo schermo.

  1. In GameManager, aggiungi using TMPro; e public TMP_Text scoreText; (la scena collega ScoreText).
  2. In Start(), mostra Score: 0.
  3. In Eat(), dopo il punto, mostra "Score: " + score.

Premi «Gioca» e mangia: in alto a sinistra il punteggio aumenta: Score: 1, Score: 2. Poi premi «Verifica».

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)];
    }
}

Tutte le lezioni di Gioco Unity: Snake 3D

Esercitati da solo: Playground Unity