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.
Görev
OrtaHer dalgayı gönder ve her birinden önce bir ara ver.
WaveSpawneriçinde[SerializeField] private float timeBetweenWaves = 8f;ekle.wavesüzerinde döngü kur:timeBetweenWaveskadar bekle,"Wave " + (i + 1)ifadesini günlüğe yaz, ardından daha önce yaptığın gibiwaves[i]öğesini oluştur.- Döngüden sonra
All waves sentifadesini 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