Menu
CoddyTech

HUD

CoddyのUnityジャーニー「Unityにおけるゲームアーキテクチャ」セクションの一部。レッスン 46/50。

challenge icon

チャレンジ

中級

只负责监听的 HUD。保留之前课程中的所有内容。名为 HUD 的画布上有一个生命值条(HealthFill,一张填充图像)、HealthText 和 WaveText,以及你的 HUD 脚本;在 Inspector 中设置好 hero、spawner、healthBar、healthText 和 waveText。HUD 从不向英雄或生成器询问任何信息:它们通过 C# 事件通知状态变化,HUD 则显示它收到的信息。

  • Hero 添加 public event Action<int, int> HealthChanged,在 Start 中以及每当受到攻击或治疗导致生命值变化时,都会使用当前生命值和 maxHealth 触发该事件。
  • WaveSpawner 添加 public event Action<int> WaveStarted,并在一波开始时使用该波的编号触发该事件。
  • HUD 在 OnEnable 中订阅这两个事件,并在 OnDisable 中取消订阅。收到 HealthChanged 时,它会根据剩余生命值的比例填充生命值条,并显示生命值,例如 HP 3/5。收到 WaveStarted 时,它会显示 Wave 2。它没有 Update。

在 Start 中触发 HealthChanged,不要在 Awake 中触发:所有对象的 OnEnable 都会在任何对象的 Start 之前运行,因此到那时 HUD 已经开始监听。按下 Play,一边战斗一边观察 HUD,然后点击 Check。

自分で試してみよう

using UnityEngine;

public class HUD : MonoBehaviour
{
    // 後のレッスンでここに実装を追加します:画面に体力とウェーブを表示します。
}

Unityにおけるゲームアーキテクチャのすべてのレッスン