Menu
CoddyTech

HUD

Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 46 z 50.

challenge icon

Wyzwanie

Średni

HUD, który tylko nasłuchuje. Zachowaj wszystko z wcześniejszych lekcji. Canvas o nazwie HUD zawiera pasek zdrowia (HealthFill, obraz typu Filled), HealthText i WaveText, a także skrypt HUD, w którym w Inspectorze ustawiono hero, spawner, healthBar, healthText i waveText. HUD nigdy o nic nie pyta bohatera ani spawnera: ogłaszają swoje zmiany za pomocą zdarzeń C#, a HUD wyświetla to, co usłyszy.

  • Hero otrzymuje public event Action<int, int> HealthChanged, które jest wywoływane z wartością zdrowia i maxHealth w Start oraz za każdym razem, gdy trafienie lub leczenie zmienia poziom zdrowia.
  • WaveSpawner otrzymuje public event Action<int> WaveStarted, które jest wywoływane z numerem fali, gdy fala się rozpoczyna.
  • HUD subskrybuje oba zdarzenia w OnEnable i anuluje subskrypcję w OnDisable. Po zdarzeniu HealthChanged wypełnia pasek proporcjonalnie do pozostałego zdrowia i wyświetla poziom zdrowia jako HP 3/5. Po zdarzeniu WaveStarted wyświetla Wave 2. Nie ma metody Update.

Wywołaj HealthChanged w Start, a nie w Awake: metoda OnEnable każdego obiektu uruchamia się przed metodą Start dowolnego obiektu, więc do tego czasu HUD już nasłuchuje. Naciśnij Play i obserwuj HUD podczas walki, a następnie kliknij Check.

Spróbuj swoich sił

using UnityEngine;

public class HUD : MonoBehaviour
{
    // W późniejszej lekcji zostanie to uzupełnione: zdrowie i numer fali na ekranie.
}

Wszystkie lekcje w sekcji Architektura gier w Unity