La interfaz de usuario
Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 46 de 50.
Desafío
IntermedioUn HUD que solo escucha. Conserva todo lo de las lecciones anteriores. El lienzo, llamado HUD, tiene una barra de salud (HealthFill, una imagen Filled), HealthText y WaveText, además del script HUD, con hero, spawner, healthBar, healthText y waveText configurados en el Inspector. El HUD nunca les pregunta nada al héroe ni al spawner: anuncian sus cambios mediante eventos de C#, y el HUD muestra lo que escucha.
Heroobtienepublic event Action<int, int> HealthChanged, que se activa con la salud ymaxHealthenStart, y cada vez que un golpe o una curación cambia la salud.WaveSpawnerobtienepublic event Action<int> WaveStarted, que se activa con el número de la oleada cuando esta empieza.HUDse suscribe a ambos enOnEnabley cancela la suscripción enOnDisable. Cuando ocurreHealthChanged, llena la barra según la proporción de salud restante y muestra la salud comoHP 3/5. Cuando ocurreWaveStarted, muestraWave 2. No tieneUpdate.
Activa HealthChanged en Start, no en Awake: el OnEnable de todos los objetos se ejecuta antes que cualquier Start, así que para entonces el HUD ya está escuchando. Pulsa Play y observa el HUD mientras luchas; después, pulsa Check.
Pruébalo tú mismo
using UnityEngine;
public class HUD : MonoBehaviour
{
// Una lección posterior completará esto: la salud y la oleada en pantalla.
}
Todas las lecciones de Arquitectura de juegos en Unity
1Componentes, no jerarquías
Componentes pequeñosUn script base para enemigosComponentes abstractosComponentes que trabajan juntosRepaso: torreta modular4Datos serializados
Clases serializablesListas en el InspectorEnumeraciones en el InspectorRepaso: tabla de botín7Máquinas de estados
Estados como clasesUna máquina de estadosTransicionesCerebros de enemigosRepaso: estados de puertas10Proyecto: Superviviente de la arena
El héroeTipos de enemigos2Interfaces en Unity
IDamageableInterfaces y TryGetComponentGetComponentsRepaso: tecla de interacción5ScriptableObjects
Recursos de datosEstadísticas de armasConfiguración compartidaOleadas como datosRepaso: base de datos de objetos