Menu
CoddyTech

La puntuación

Lección 11 de 14 del curso Juego de Unity: Serpiente 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

Muestra la puntuación en pantalla.

  1. En GameManager, añade using TMPro; y public TMP_Text scoreText; (la escena enlaza ScoreText).
  2. En Start(), muestra Score: 0.
  3. En Eat(), después de sumar el punto, muestra "Score: " + score.

Pulsa «Jugar» y come: en la esquina superior izquierda se muestra Score: 1, Score: 2. Después, pulsa «Comprobar».

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

Todas las lecciones de Juego de Unity: Serpiente 3D

Practica por tu cuenta: Playground de Unity