Menu
CoddyTech

תצוגת HUD

חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 46 מתוך 50.

challenge icon

אתגר

בינוני

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