Menu
CoddyTech

Każda fala

Lekcja 6 z 25 w kursie Gra w Unity: Obrona wieży w Coddy.

Jedna fala to za mało, by stworzyć grę. Procedura współprogramowa przechodzi kolejno przez każdą falę, robiąc przerwę przed każdą z nich, aby gracz mógł się przygotować, i informuje konsolę, która fala się rozpoczyna. Przerwa to kolejne WaitForSeconds na początku pętli:

for (int i = 0; i < waves.Count; i++)
{
    yield return new WaitForSeconds(timeBetweenWaves);
    // zapisz falę w logu, a następnie utwórz waves[i] jak poprzednio
}

Fale są numerowane od 0 na liście, a od 1 dla gracza, dlatego konsola wyświetla "Wave " + (i + 1).

challenge icon

Wyzwanie

Średni

Wyślij każdą falę, robiąc przerwę przed każdą.

  1. W WaveSpawner dodaj [SerializeField] private float timeBetweenWaves = 8f;.
  2. Przejdź pętlą przez waves: odczekaj timeBetweenWaves, wyświetl w konsoli "Wave " + (i + 1), a następnie jak wcześniej utwórz obiekty z waves[i].
  3. Po pętli wyświetl w konsoli All waves sent.

Naciśnij „Graj”: po 8 sekundach w konsoli pojawi się Wave 1 i przyjdą Grunty. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Gra w Unity: Obrona wieży

Poćwicz samodzielnie: Edytor online Unity