Menu
CoddyTech

Fala

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

Grunt i Runner są teraz prefabami, podobnie jak Tank i Boss, a Spawner znajduje się w punkcie WP0. Fala to kilka liczb: który przeciwnik, ilu ich jest i jakie są między nimi odstępy. Dlatego Wave jest klasą [System.Serializable], a spawner przechowuje List<Wave>, którą Inspector wypełnia ośmioma falami w grze. Bez [System.Serializable] Unity nie może wypełnić listy, więc pozostaje ona pusta.

Tworzenie przeciwników w odstępach czasu odbywa się za pomocą korutyny: yield return new WaitForSeconds(...) czeka, nie zatrzymując gry. Prefab nie może odwoływać się do punktów trasy w scenie, więc spawner przekazuje każdemu nowemu przeciwnikowi jego własne punkty zaraz po Instantiate:

Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
enemy.waypoints = waypoints;
yield return new WaitForSeconds(wave.spacing);
challenge icon

Wyzwanie

Łatwy

Wyślij pierwszą falę Gruntów ścieżką.

  1. W Wave.cs umieść [System.Serializable] nad Wave, wraz z public Enemy enemy;, public int count; i public float spacing;.
  2. W WaveSpawner dodaj [SerializeField] private List<Wave> waves; i [SerializeField] private Transform[] waypoints;.
  3. Z Start uruchom korutynę, która tworzy waves[0].count przeciwników, jak wyżej.

Naciśnij „Graj”: sześć Gruntów wymaszeruje w odstępach 1.2 sekundy. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

// Do dodania później: wysyła wrogów falami wzdłuż ścieżki.
public class WaveSpawner : MonoBehaviour
{
}

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

Poćwicz samodzielnie: Edytor online Unity