La puntuación
Lección 11 de 14 del curso Juego de Unity: Snake 3D de Coddy.
La puntuación aumenta en GameManager, pero nadie puede verla. Un texto de TextMeshPro en la esquina superior izquierda la muestra: un campo TMP_Text establecido en el Inspector, y su text escrito desde el código.
Escribe el texto en el mismo lugar donde cambia el número, después del cambio. Así, la pantalla nunca se queda atrás con respecto a la puntuación. Una tienda actualiza sus monedas de la misma manera:
public void Buy(int price)
{
coins -= price;
coinsText.text = "Coins: " + coins;
}Establece el texto también una vez en Start(), para que el primer fotograma muestre la puntuación real, independientemente de lo que diga el texto en la escena.
Desafío
Intermedio- En
GameManager, añadeusing TMPro;ypublic TMP_Text scoreText;. La escena lo asigna a ScoreText, arriba a la izquierda. - En
Start(), muestraScore: 0. - En
Eat(), muestra la nueva puntuación, comoScore: 3después de la tercera comida.
Pulsa Play y come; después, pulsa Check.
Pruébalo tú mismo
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)];
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.