Menu
CoddyTech

Интерфейс

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 46 из 50.

challenge icon

Задание

Средне

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