Каждая волна
Урок 6 из 25 курса Игра на Unity: Tower Defense на Coddy.
Одна волна — это ещё не игра. Корутина проходит все волны по порядку, делая паузу перед каждой, чтобы игрок успел подготовиться, и сообщает в Console, какая волна начинается. Пауза — это ещё один WaitForSeconds в начале цикла:
for (int i = 0; i < waves.Count; i++)
{
yield return new WaitForSeconds(timeBetweenWaves);
// запишите волну в журнал, затем создайте waves[i], как и раньше
}Нумерация волн в списке начинается с 0, а для игрока — с 1, поэтому в Console выводится "Wave " + (i + 1).
Задание
СреднеОтправляй каждую волну, делая паузу перед каждой.
- В
WaveSpawnerдобавь[SerializeField] private float timeBetweenWaves = 8f;. - Организуй цикл по
waves: ждиtimeBetweenWaves, выводи в журнал"Wave " + (i + 1), затем создавайwaves[i], как и раньше. - После цикла выведи в журнал
All waves sent.
Нажми «Играть»: через 8 секунд в Console появится Wave 1, и придут Grunts. Затем нажми «Проверить».
Попробуйте сами
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: Tower Defense
Потренируйтесь самостоятельно: Песочница Unity