Menu
CoddyTech

كل موجة

الدرس 6 من 25 في دورة لعبة Unity: الدفاع عن الأبراج على Coddy.

موجة واحدة لا تصنع لعبة. يمرّ الروتين المشترك على كل موجة بالترتيب، مع استراحة قبل كل موجة حتى يتمكن اللاعب من الاستعداد، ويخبر وحدة التحكم بالموجة التي تبدأ. الاستراحة هي WaitForSeconds إضافية، في بداية الحلقة:

for (int i = 0; i < waves.Count; i++)
{
    yield return new WaitForSeconds(timeBetweenWaves);
    // سجّل الموجة، ثم أنشئ waves[i] كما في السابق
}

يبدأ عدّ الموجات من 0 في القائمة ومن 1 بالنسبة إلى اللاعب، لذا تعرض وحدة التحكم "Wave " + (i + 1).

challenge icon

التحدي

متوسط

أرسل كل موجة، مع استراحة قبل كل واحدة.

  1. في WaveSpawner، أضف [SerializeField] private float timeBetweenWaves = 8f;.
  2. كرّر المرور على waves: انتظر timeBetweenWaves، وسجّل "Wave " + (i + 1)، ثم أنشئ waves[i] كما فعلت من قبل.
  3. بعد الحلقة، سجّل All waves sent.

اضغط «العب»: بعد 8 ثوانٍ، ستعرض وحدة التحكم Wave 1، وستظهر كائنات Grunt. ثم اضغط «تحقق».

جرّب بنفسك

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WaveSpawner : MonoBehaviour
{
    [SerializeField] private List<Wave> waves = new List<Wave>();
    [SerializeField] private Transform[] waypoints;

    void Start()
    {
        StartCoroutine(RunWaves());
    }

    IEnumerator RunWaves()
    {
        Wave wave = waves[0];
        for (int n = 0; n < wave.count; n++)
        {
            Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
            enemy.waypoints = waypoints;
            yield return new WaitForSeconds(wave.spacing);
        }
    }
}

جميع دروس لعبة Unity: الدفاع عن الأبراج

تدرّب بنفسك: Playground لـ Unity