Optimiza tu HUD en Unity con una configuración clara y sostenible: conecta la UI del juego a un script de C# para mostrar monedas, puntuación y puntuación máxima en tiempo real. Verás cómo usar UnityEngine.UI, enlazar variables públicas desde el inspector y formatear decimales con precisión, listo para integrarse con tu Game Manager.
¿Cómo configurar el script de la vista del juego en Unity?
Para mostrar datos en pantalla desde el Game Canvas, crea un script dedicado, por ejemplo, Game View, y así podrás actualizar solo lo necesario cuando se esté jugando. Activa el Game Canvas si está oculto para poder asignar referencias en el editor.
¿Qué librería habilita el tipo Text en la UI?
- Importa la librería de interfaz: using UnityEngine.UI.
- Sin esta importación, el tipo Text no aparece en C#.
- Recuerda: UI significa User Interface.
¿Cómo mapear los elementos del inspector a variables públicas?
- Declara variables públicas de tipo Text para cada campo: monedas, puntuación y puntuación máxima.
- Asigna desde el editor arrastrando cada Text del Game Canvas a su casilla en el componente del script.
- Ventaja: separación nítida entre lógica y presentación.
using UnityEngine;
using UnityEngine.UI;
public class GameView : MonoBehaviour
{
public Text coinsText, scoreText, maxScoreText;
void Update()
{
// Actualizar solo si estamos en la partida.
if (GameManager.Instance.CurrentGameState == GameState.InGame)
{
int coins = 0; // placeholder
float score = 0f; // placeholder
float maxScore = 0f; // placeholder
coinsText.text = coins.ToString();
scoreText.text = "Score: " + score.ToString("F1");
maxScoreText.text = "Max score: " + maxScore.ToString("F1");
}
}
}
¿Cómo y cuándo actualizar la UI con datos del juego?
Usa Update pero condiciona la escritura a estar en el estado de juego activo. Esto evita cálculos y escrituras innecesarias cuando no se está jugando y mantiene el HUD limpio.
¿Por qué usar int para monedas y float para puntuaciones?
- Monedas: valores contables. Se representan naturalmente con int.
- Puntuación basada en distancia recorrida: medida continua. Se expresa mejor con float.
- Beneficio: precisión adecuada sin desperdiciar memoria ni complicar el formato.
¿Cómo formatear decimales con toString para una lectura limpia?
- Convierte tipos numéricos a texto antes de mostrarlos: ToString().
- Puntuaciones con decimales: usa ToString("F1") para limitar a un decimal.
- Concatenación clara de etiquetas y valores: "Score: " + valor.
coinsText.text = coins.ToString(); // int → string
scoreText.text = "Score: " + score.ToString("F1"); // float → string con 1 decimal
maxScoreText.text = "Max score: " + maxScore.ToString("F1");
¿Qué prácticas mejoran la claridad y preparación del HUD?
Preparar la estructura ahora te permitirá integrar los datos reales sin rehacer la interfaz. Prioriza la legibilidad, el orden y la verificación de estado.
- Usa placeholders numéricos iniciales (0, 0.0) hasta conectar la lógica del juego.
- Actualiza la UI solo en GameState.InGame mediante el singleton del Game Manager.
- Oculta el canvas que no uses para reducir ruido visual al configurar.
- Emplea etiquetas concisas: "Score:" y "Max score:" seguidas del valor.
- Evita demasiados decimales en pantalla: un decimal es suficiente para la puntuación.
- Conecta todas las referencias del Game Canvas al script antes de ejecutar.
¿Te gustaría compartir cómo nombras tus variables UI o cómo organizas estados de juego para mantener el HUD consistente?