모든 웨이브
Coddy의 Unity 게임: 타워 디펜스 코스 레슨. 25개 중 6번째.
웨이브 하나만으로는 게임이라고 할 수 없습니다. 코루틴은 모든 웨이브를 순서대로 처리하며, 플레이어가 준비할 수 있도록 각 웨이브 전에 잠시 멈추고 어떤 웨이브가 시작되는지 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이 표시되고 Grunt들이 나타납니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
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 게임: 타워 디펜스의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드