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).
Thử thách
Trung bìnhGửi từng đợt, nghỉ một lúc trước mỗi đợt.
- Trong
WaveSpawner, thêm[SerializeField] private float timeBetweenWaves = 8f;. - Lặp qua
waves: đợitimeBetweenWaves, ghi nhật ký"Wave " + (i + 1), rồi tạo đợtwaves[i]như trước. - 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