Menu
CoddyTech

모든 웨이브

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)이 표시됩니다.

challenge icon

챌린지

중급

각 웨이브를 보내고, 웨이브가 시작되기 전에 매번 잠시 기다리세요.

  1. WaveSpawner에 [SerializeField] private float timeBetweenWaves = 8f;를 추가하세요.
  2. waves를 반복 처리하세요. timeBetweenWaves만큼 기다린 다음 "Wave " + (i + 1)을 로그에 출력하고, 이전과 같이 waves[i]를 생성하세요.
  3. 반복문이 끝난 뒤 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 플레이그라운드