Víctor Daniel Cardozo Fernández
Jonathan Sandoval
gracias!!! me pasé un rato tratando de encontrar porque no reconocía el text al querer ligarlo con el scrip!!! :)
Maria Eugenia Alonso
muchas graciasss no entendia nada xd
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?
¿Cómo mapear los elementos del inspector a variables públicas?
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?
¿Cómo formatear decimales con toString para una lectura limpia?
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.
¿Te gustaría compartir cómo nombras tus variables UI o cómo organizas estados de juego para mantener el HUD consistente?
Víctor Daniel Cardozo Fernández
Jonathan Sandoval
gracias!!! me pasé un rato tratando de encontrar porque no reconocía el text al querer ligarlo con el scrip!!! :)
Maria Eugenia Alonso
muchas graciasss no entendia nada xd
Miguel Angel Franco
Pienso yo que la variable int y la variable float tienen difetente capacidad de memoria por lo tanto el entero que es para los coins que se va a recolectar en ese nivel que no van a ser mas de ''200'' eso es un ejemplo mientras que el Score van a ser mas, porque es la suma de todos los coins que has recogido en los niveles y necesitas una memoria mas grande para guardar los coins. creo que es eso.
Gael Treviño Prieto
Los ints es para solo numero enteros mientras los float es para enteros y decimales. Como no vamos a tener un score que de numeros decimales como resultado, es mejor ocupar int pues solo queremos numeros enteros
Luis Rodrigo Alvarez Herrera
Si no vamos a la logica, las monedas nunca seran decimales, en la logica del juego no puedo tomar la mitad de una moneda.
Si por el otro lado voy a contar cuantos metros recorro como en el juego del dinosaurio de google, entonces necesitare contar medios metros
Ignacio Bogarín Alvarez
Excelente referencia
Hector Alejandro Ramirez Huertas
Un dato tipo Int es una cantidad precisa y/o esacta 1,20, 100.
Mientras que un dato tipo float es flotatante lo que significa que es irregular en su resultado 1,30. 20,458. 100,2934.
Florencia
exacto
la interpolación de los scores se puede simplificar así:
scoreText.text = $"score {score:f1}"; maxScoreText.text = $"max. score {maxScore:f1}";
Nicolás Alejandro zlachevsky Gomez
tengo una consulta, yo oculto la UI de game Canvas y al hacer click en play no me aparece, como si al profe, hay algo mal que hice? o que puede ser?
Juan Sebastian Avila
Selecciona el Canvas y revisa en el Inspector si lo tienes deshabilitado:
Si se encuentra deshabilitado no lo podrás visualizar al darle Play. A menos de que lo habilites por código.
Saludos!
Nicolás Alejandro zlachevsky Gomez
muchas gracias y pues, lo deshabilito solo el canvas como sale en el video, y dejo el del menu y al darle play no me sale :c el objeto en si no lo deshabilito
Esteban Villarreal Ramírez
hola hace unas semanas no continue con el proyecto pero ahora que vuelvo a ver , las variables que tenia ya asignadas se quitaron y ya no me deja volverlas a ponerlas en el inspector , me refiero a las variables como coins text score text max score, al igua de las mas antiguas como el StartPoins y endPoint se quitaron, y siempre me asegure de guardar, ayuda
Carlos Jiménez
Hola, no he podido hacer que aparezca el game menu canvas mientras juego y luego el game over canvas cuando muere el player. Solo veo el main menu antes de jugar y vuelve a aparecer el main menu al morir. Alguien podria asesorarme? Gracias
Pablo André Vásquez Romualdo
Hola, podrias compartir el codigo para ver en que esta fallando?
Pedro Muñoz Becerra
Revisa que solo el componente canvas tenga desactivado el checkbox y no el gameObject (que es el primero que aparece).
Juanjo González
Ya sabemos la diferencia entre Int y Float
El Score equivale a la distancia recorrida por el usuario en una partida, por lo tanto, para una referencia más exacta, se debe usar decimales
Mientras que las monedas son números enteros y no necesitan de decimales para exactitud
Pedro Muñoz Becerra
A pesar de que int nos permite trabajar con números muy grandes, existe una limitación, que si trabajamos con números más nos vale conocer para tener en cuenta.
Los valores de un tipo de dato int son:
-2,147,483,648 a 2,147,483,647
En el caso que queramos trabajar con números aún más grandes, existe el tipo "long":
-9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
Link de referencia
Tomas Leonardo Amaya Ríos
Score  { } // Update is called once per frame void Update() { if(GameManager.sharedInstance.currentGameState == GameState.IN_GAME) { int coins = 0; float score = 0; float maxScore = 0; coinText.text = coins.ToString(); scoreText.text = "Score " + score.ToString("f1"); maxScoreText.text = "Max Score " + maxScore.ToString("f1"); } } }