Menu
CoddyTech

Her Dalga

Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 6 / 25.

Tek bir dalga oyun sayılmaz. Coroutine, oyuncunun hazırlanabilmesi için her dalgadan önce bir bekleme süresi bırakarak tüm dalgaları sırayla işler ve hangi dalganın başladığını Console'a bildirir. Bekleme süresi, döngünün başına eklenen bir WaitForSeconds daha ile sağlanır:

for (int i = 0; i < waves.Count; i++)
{
    yield return new WaitForSeconds(timeBetweenWaves);
    // dalgayı günlüğe kaydet, ardından waves[i] öğesini önceki gibi oluştur
}

Dalgalar listede 0'dan, oyuncuya gösterilirken ise 1'den sayılır; bu nedenle Console'da "Wave " + (i + 1) görünür.

challenge icon

Görev

Orta

Her dalgayı gönder ve her birinden önce bir ara ver.

  1. WaveSpawner içinde [SerializeField] private float timeBetweenWaves = 8f; ekle.
  2. waves üzerinde döngü kur: timeBetweenWaves kadar bekle, "Wave " + (i + 1) ifadesini günlüğe yaz, ardından daha önce yaptığın gibi waves[i] öğesini oluştur.
  3. Döngüden sonra All waves sent ifadesini günlüğe yaz.

“Oyna” düğmesine bas: 8 saniye sonra Console'da Wave 1 yazar ve Grunt'lar gelir. Ardından “Kontrol et” düğmesine bas.

Kendin dene

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 Oyunu: Kule Savunması bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground