Menu
CoddyTech

Mỗi đợt

Bài học 6 trên 25 trong khóa học Game Unity: thủ thành của Coddy.

Một đợt sóng chưa tạo thành trò chơi. Coroutine lần lượt xử lý từng đợt sóng, chờ trước mỗi đợt để người chơi chuẩn bị, rồi thông báo trong Console đợt sóng nào bắt đầu. Khoảng chờ là một WaitForSeconds nữa, ở đầu vòng lặp:

for (int i = 0; i < waves.Count; i++)
{
    yield return new WaitForSeconds(timeBetweenWaves);
    // Ghi log đợt tấn công, rồi tạo waves[i] như trước
}

Trong danh sách, các đợt sóng được đếm từ 0, còn với người chơi thì được đếm từ 1, nên Console hiển thị "Wave " + (i + 1).

challenge icon

Thử thách

Trung bình

Gửi từng đợt, nghỉ một lúc trước mỗi đợt.

  1. Trong WaveSpawner, thêm [SerializeField] private float timeBetweenWaves = 8f;.
  2. Lặp qua waves: đợi timeBetweenWaves, ghi nhật ký "Wave " + (i + 1), rồi tạo đợt waves[i] như trước.
  3. Sau vòng lặp, ghi nhật ký All waves sent.

Nhấn Chơi: sau 8 giây, Console hiển thị Wave 1 và Grunt xuất hiện. Sau đó nhấn Kiểm tra.

Tự làm thử

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);
        }
    }
}

Tất cả bài học trong Game Unity: thủ thành

Tự luyện tập: Playground Unity