Agregando un sistema de puntos

Clase 25 de 34Curso de Desarrollo de Videojuegos Móviles con Unity

Resumen

¿Cómo implementar un sistema de puntos en Unity?

Agregar un sistema de puntos en un juego puede incrementar su atractivo y mejorar la experiencia del jugador. En este contenido, te guiamos sobre cómo implementarlo usando el motor de juego Unity. Aquí aprenderás a utilizar el patrón Singleton, crear eventos y conectar tu interfaz gráfica con tu lógica de juego para visualizar los puntos en pantalla.

¿Cómo crear y configurar GameManager como Singleton?

Para manejar y mantener un seguimiento de los puntos en tu juego, es esencial crear una clase llamada GameManager. Esta clase debe seguir el patrón Singleton para asegurar que una única instancia esté disponible a lo largo de todo el juego. Sigue estos pasos:

  1. Crear una clase GameManager:

    • En tu carpeta de scripts de Unity, crea una nueva clase denominada GameManager.
    • Abre la clase en Visual Studio y usa el modelo Singleton para asegurarte de que haya solo una instancia de GameManager.
  2. Implementación del Singleton:

    public class GameManager : MonoBehaviour {
        public static GameManager instance;
        
        void Awake() {
            if (instance == null) {
                instance = this;
            } else if (instance != this) {
                Destroy(gameObject);
            }
        }
    }
    
  3. Agregar propiedades y eventos:

    • Agrega una variable pública de tipo entero points para mantener la cantidad de puntos.
    • Implementa un UnityEvent llamado onPointsUpdated para notificar a otros componentes cuando los puntos cambien.

¿Cómo sumar puntos al obtener matches?

La lógica para sumar puntos al obtener matches es sencilla pero requiere manipulación eficiente del contador de puntos. Aquí te mostramos cómo hacerlo:

  1. Crear una función para sumar puntos:

    • Define una función pública addPoints que reciba el número de nuevos puntos a agregar.
    public void addPoints(int newPoints) {
        points += newPoints;
        onPointsUpdated?.Invoke();
    }
    
  2. Integrar la función en el juego:

    • En la clase donde detectas matches, implementa la función ourPoints que conecte la lógica con GameManager.
    • Llama a ourPoints en los puntos críticos del juego donde hay matches:
      • Al final de la función swapTiles.
      • En la función findMatchesRecursively.

¿Cómo visualizar los puntos con TextMeshPro?

Una interfaz gráfica bien diseñada mejora la experiencia del usuario. Para mostrar los puntos al jugador, sigue estos pasos:

  1. Configurar TextMeshPro:

    • Utiliza TextMeshPro para una representación clara y profesional de textos dentro del juego.
    • Crea un objeto de texto usando TextMeshPro y Personaliza la alineación y tamaño del texto según tus necesidades.
  2. Crear una clase para manejar la UI de puntos:

    • Crea una nueva clase UIPoints para actualizar el contenido de TextMeshPro en tu interfaz gráfica.
  3. Suscribir eventos para actualizar la UI:

    using TMPro;
    
    public class UIPoints : MonoBehaviour {
        private int displayedPoints = 0;
        public TextMeshProUGUI pointsLabel;
    
        void Start() {
            GameManager.instance.onPointsUpdated.AddListener(UpdatePoints);
        }
    
        void UpdatePoints() {
            StartCoroutine(UpdatePointsCoroutine());
        }
    
        IEnumerator UpdatePointsCoroutine() {
            while (displayedPoints < GameManager.instance.points) {
                displayedPoints++;
                pointsLabel.text = displayedPoints.ToString();
                yield return new WaitForSeconds(0.1f);
            }
            yield return null;
        }
    }
    
  4. Vincular el script UIPoints:

    • Asigna el script a tu objeto de texto TextMeshPro y vincula el label en el inspector de Unity.

¿Cómo probar y ajustar el sistema de puntos?

Antes de salir al aire con tu juego, es vital probar que el sistema de puntos funciona como se espera:

  • Crea un objeto vacío en Unity, añade el componente GameManager.
  • Configura la variable pointsPerMatch para definir la cantidad de puntos por match.
  • Prueba distintos escenarios para asegurarte de que los puntos aumentan correctamente y que se reflejan en la interfaz gráfica.

Este sistema básico de puntos es altamente adaptable. Puedes modificar fácilmente la cantidad de puntos otorgada por diferentes tipos de piezas, por ejemplo, implementando un sistema de multiplicadores basado en reglas individuales para cada tipo de pieza. Experimenta y agrega complejidad a tu juego conforme lo domines. ¡Sigue aprendiendo y disfruta desarrollando en Unity!