Menu
CoddyTech

Ogni ondata

Lezione 6 di 25 del corso Gioco Unity: Tower Defense di Coddy.

Un'ondata non basta per un gioco. La coroutine attraversa tutte le ondate in ordine, con una pausa prima di ciascuna per permettere al giocatore di prepararsi, e comunica alla Console quale ondata sta iniziando. La pausa è un altro WaitForSeconds, all'inizio del ciclo:

for (int i = 0; i < waves.Count; i++)
{
    yield return new WaitForSeconds(timeBetweenWaves);
    // registra l'ondata nel log, poi genera waves[i] come prima
}

Le ondate si contano a partire da 0 nell'elenco e da 1 per il giocatore, quindi la Console mostra "Wave " + (i + 1).

challenge icon

Sfida

Medio

Invia ogni ondata, con una pausa prima di ciascuna.

  1. In WaveSpawner, aggiungi [SerializeField] private float timeBetweenWaves = 8f;.
  2. Scorri waves: attendi timeBetweenWaves, registra "Wave " + (i + 1), poi genera waves[i] come prima.
  3. Dopo il ciclo, registra All waves sent.

Premi «Gioca»: dopo 8 secondi, la Console mostra Wave 1 e arrivano i Grunt. Poi premi «Verifica».

Provalo tu

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);
        }
    }
}

Tutte le lezioni di Gioco Unity: Tower Defense

Esercitati da solo: Playground Unity