גלי אויבים
חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 44 מתוך 50.
אתגר
בינוניהאויבים מופיעים כעת בגלים, והגלים הם נתונים. שמור על כל מה שנוצר בשיעורים הקודמים. בזירה כבר אין אויבים משלה: רכיבי ה-Prefab של Grunt ו-Dasher מכילים את הסקריפטים שלך, ארבע נקודות הופעה נמצאות בפינות, ולאובייקט Spawner שבמרכז יש את הסקריפט WaveSpawner.
- ב-
WaveSet.cs, הוסף מחלקהWaveעם[System.Serializable], ובהpublic Enemy enemy(רכיב ה-Prefab),public int countו-public float spacing.WaveSetהוא ScriptableObject עם[CreateAssetMenu],public List<Wave> wavesו-public float restBetweenWaves. הנכסArenaשל הסצנה מכיל שלושה גלים (3 אויבי Grunt בהפרש של 0.5 s, 2 אויבי Dasher בהפרש של 1 s, 5 אויבי Grunt בהפרש של 0.4 s) והפסקה של 2 שניות. - ל-
Enemyישpublic static event Action<Enemy> Died, שמופעל עם האויב רגע לפני השמדתו. - ל-
WaveSpawnerישwaveSetו-spawnPointsשמוגדרים ב-Inspector, וגםpublic int Wave { get; private set; }, מספר הגל הפעיל. מתוךStart, קורוטינה מריצה את גלי הנכס לפי הסדר. בכל גל: הוסף 1 ל-Waveורשום אותו ביומן, למשלWave 1; צור את אויבי הגל, לפיcount, בהפרש שלspacingשניות, את האויבi(החל מ-0) ב-spawnPoints[i % spawnPoints.Length]; המתן עד שלא יישארו אויבים בחיים; ואז המתןrestBetweenWavesשניות. אחרי הגל האחרון, הסדרה מתחילה שוב מהראשון, והספירה שלWaveנמשכת: 4, 5 וכן הלאה. - ספור את האויבים שנותרו בחיים באמצעות האירוע
Died: הירשם אליו ב-OnEnableובטל את ההרשמה ב-OnDisable. ה-Spawner רק קורא את הנכס: ב-Editor, שינוי שנעשה בנכס בזמן שהמשחק רץ יישאר בנכס אחרי Play.
לחץ על Play ושרוד כמה גלים, ואז לחץ על Check.
נסו בעצמכם
using UnityEngine;
public class WaveSpawner : MonoBehaviour
{
// בשיעור מאוחר יותר יתווסף כאן הקוד: שולח את הגלים אל הזירה.
}
כל השיעורים ביחידה ארכיטקטורת משחקים ב-Unity
1רכיבים, לא היררכיות
רכיבים קטניםסקריפט בסיס לאויברכיבים מופשטיםרכיבים שעובדים יחדסיכום: צריח מודולרי