תצוגת HUD
חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 46 מתוך 50.
אתגר
בינוניHUD שרק מאזין. שמור את כל מה שבנית בשיעורים הקודמים. ה־Canvas בשם HUD כולל מד בריאות (HealthFill, תמונה במצב Filled), את HealthText ואת WaveText, וגם את הסקריפט HUD, כשהשדות hero, spawner, healthBar, healthText ו־waveText מוגדרים ב־Inspector. ה־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רכיבים, לא היררכיות
רכיבים קטניםסקריפט בסיס לאויברכיבים מופשטיםרכיבים שעובדים יחדסיכום: צריח מודולרי