Menu
CoddyTech

Волна

Урок 5 из 25 курса Игра на Unity: Tower Defense на Coddy.

Теперь Grunt и Runner — префабы, как и Tank с Boss, а Spawner находится на WP0. Волна — это несколько чисел: какой враг, сколько их и какое расстояние между ними. Поэтому Wave — это класс [System.Serializable], а спавнер хранит List<Wave>, который Inspector заполняет восемью волнами игры. Без [System.Serializable] Unity не сможет заполнить список, и он останется пустым.

Появление врагов с интервалами выполняется корутиной: yield return new WaitForSeconds(...) ждёт, не останавливая игру. Префаб не может ссылаться на путевые точки в сцене, поэтому сразу после Instantiate спавнер передаёт каждому новому врагу его собственные путевые точки:

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

Задание

Легко

Отправь первую волну Grunt по пути.

  1. В Wave.cs добавь атрибут [System.Serializable] к Wave, а также public Enemy enemy;, public int count; и public float spacing;.
  2. В WaveSpawner добавь [SerializeField] private List<Wave> waves; и [SerializeField] private Transform[] waypoints;.
  3. Из Start запусти корутину, которая создаёт waves[0].count врагов, как описано выше.

Нажми «Играть»: шесть Grunt выйдут на путь с интервалом в 1,2 секунды. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

// Будет добавлено позже: отправляет врагов по пути волнами.
public class WaveSpawner : MonoBehaviour
{
}

Все уроки раздела Игра на Unity: Tower Defense

Потренируйтесь самостоятельно: Песочница Unity