Menu
CoddyTech

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.

challenge icon

Desafío

Intermedio
  1. En GameManager, añade using TMPro; y public TMP_Text scoreText;. La escena lo asigna a ScoreText, arriba a la izquierda.
  2. En Start(), muestra Score: 0.
  3. En Eat(), muestra la nueva puntuación, como Score: 3 despué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)];
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Juego de Unity: Snake 3D