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.
Sfida
MedioMostra il punteggio sullo schermo.
- In
GameManager, aggiungiusing TMPro;epublic TMP_Text scoreText;(la scena collega ScoreText). - In
Start(), mostraScore: 0. - 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