Variables autocomputadas en Unity GUI Manager

Clase 23 de 31Curso de Desarrollo de Videojuegos para Móviles con Unity

Resumen

Aprende a controlar la interfaz de Unity con seguridad: inicializa el contador de movimientos, actualiza la puntuación con propiedades en C# y garantiza un único GUI manager con el patrón singleton. Con este enfoque, la UI refleja cambios automáticamente y evitas errores comunes en Visual Studio.

¿Cómo inicializar el contador de movimientos en la interfaz UI?

Para mostrar los movimientos restantes, se define una variable privada y se enlaza con un componente Text del Canvas. Así, el valor aparece en pantalla desde el Start y queda listo para actualizarse más adelante.

  • Importa la librería: using UnityEngine.UI.
  • Declara public Text movesText para arrastrar el texto desde el editor.
  • Inicializa el contador privado con 30 en Start.
  • Refleja el valor en pantalla con movesText.text.
using UnityEngine;
using UnityEngine.UI;

public class GUIManager : MonoBehaviour
{
    public Text movesText; // Texto de movimientos en el Canvas.
    private int moveCounter; // Contador privado.

    void Start()
    {
        moveCounter = 30;
        movesText.text = "Moves: " + moveCounter;
    }
}
  • Arrastra el componente del texto de movimientos al campo movesText en el inspector.
  • Pulsa Play y verás 30 movimientos al iniciar.

¿Qué hacer si Visual Studio muestra errores rojos?

A veces el plugin que conecta Visual Studio con Unity falla y colorea todo en rojo sin razón. La solución práctica es simple.

  • Cierra Visual Studio por completo.
  • Reábrelo desde Unity para regenerar el vínculo.
  • Comprueba que desaparecen los errores falsos.

¿Cómo sincronizar la puntuación con el texto usando propiedades?

La puntuación se gestiona con una propiedad que encapsula el valor y actualiza la UI automáticamente. Al cambiar la puntuación, el setter refresca el Text sin llamadas extra.

  • Declara private int score y public Text scoreText.
  • Configura score = 0 en Start y muestra el valor inicial.
  • Crea la propiedad pública SCORE con getter y setter.
  • Actualiza el texto dentro del setter para reflejar el cambio.
using UnityEngine;
using UnityEngine.UI;

public class GUIManager : MonoBehaviour
{
    public Text scoreText; // Texto de puntuación en el Canvas.
    private int score;     // Puntuación privada.

    void Start()
    {
        score = 0;
        scoreText.text = "Score: " + score;
    }

    public int SCORE
    {
        get { return score; }
        set
        {
            score = value;
            scoreText.text = "Score: " + score; // Refresco automático.
        }
    }
}

Este mismo patrón se aplica al contador de movimientos. Así, otras clases pueden modificarlo y la UI se actualiza sola.

public int MOVE_COUNTER
{
    get { return moveCounter; }
    set
    {
        moveCounter = value;
        movesText.text = "Moves: " + moveCounter;
    }
}

Beneficios clave: - Encapsulación del estado y la presentación en una sola propiedad. - Actualización automática del Text al cambiar el valor. - Consistencia: mismo formato en Start y en los setters.

¿Por qué usar un singleton para el manager de la GUI?

El rol del manager es centralizar la lógica de la interfaz. Debe haber un único manager por funcionalidad en todo el proyecto. Con la técnica del singleton, garantizas una sola instancia accesible desde cualquier clase y evitas duplicidades.

  • Asegura una fuente única de verdad para puntuación y movimientos.
  • Simplifica la comunicación entre sistemas que actualizan la UI.
  • Previene errores por múltiples instancias compitiendo.

Ponlo en práctica: convierte tu clase actual de GUI manager en singleton y verifica que otras clases acceden a sus propiedades públicas para modificar puntuación y movimientos.

¿Tienes dudas sobre la propiedad, el setter o el enlace del Text en el Canvas? Pregunta y comparte tu progreso.