Интерфейс
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 46 из 50.
Задание
СреднеHUD, который только слушает. Сохраните всё из предыдущих уроков. На канвасе с именем HUD есть полоса здоровья (HealthFill, изображение с типом Filled), HealthText и WaveText, а также скрипт HUD, в котором в Inspector заданы hero, spawner, healthBar, healthText и waveText. HUD никогда ни о чём не спрашивает героя или spawner: они сообщают об изменениях с помощью событий C#, а HUD отображает то, что получает.
- В
Heroдобавляетсяpublic event Action<int, int> HealthChanged, которое вызывается с текущим здоровьем иmaxHealthвStart, а также при каждом изменении здоровья в результате урона или лечения. - В
WaveSpawnerдобавляетсяpublic event Action<int> WaveStarted, которое вызывается с номером волны при её начале. HUDподписывается на оба события вOnEnableи отписывается вOnDisable. При событииHealthChangedон заполняет полосу пропорционально оставшемуся здоровью и показывает здоровье в форматеHP 3/5. При событииWaveStartedон показываетWave 2. У него нетUpdate.
Вызывайте HealthChanged в Start, а не в Awake: у каждого объекта OnEnable выполняется раньше любого Start, поэтому к этому моменту HUD уже подписан. Нажмите Play и следите за HUD во время боя, затем нажмите Check.
Попробуйте сами
using UnityEngine;
public class HUD : MonoBehaviour
{
// В одном из следующих уроков здесь появятся здоровье и номер волны на экране.
}
Все уроки раздела Архитектура игр в Unity
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыСовместная работа компонентовПовторение: модульная турель4Сериализованные данные
Сериализуемые классыСписки в InspectorПеречисления в InspectorПовторение: таблица лута2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействия5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиВолны как данныеПовторение: база предметов