Dalga Sayacı
Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 24 / 25.
HUD, dalga numarasını gösterir. Bunu spawner bilir ve GameManager gösterir; bu yüzden spawner, dalga numarasını ve toplam dalga sayısını içeren bir C# olayı olan WaveStarted'ı tetikler. Düşmanların statik olaylarından farklı olarak bu olay tek bir spawner'a aittir ve GameManager, spawner alanı üzerinden olaya abone olur:
void OnEnable()
{
spawner.WaveStarted += ShowWave;
}Bir Action<int, int> iki int değeri aktarır; bu nedenle ShowWave iki parametre alır: void ShowWave(int wave, int total).
Görev
OrtaHangi dalganın devam ettiğini göster.
WaveSpawneriçindepublic event Action<int, int> WaveStarted;ekle (using System;) ve bir dalga başlarkeni + 1ilewaves.Countdeğerlerini kullanarak olayı tetikle.GameManageriçinde serileştirilmişspawner(WaveSpawner) vewaveText(TMP_Text) ekle. OnEnable içinde abone ol, OnDisable içinde abonelikten çık veWave 1/8göster.
“Oyna” düğmesine bas: İlk dalga başlarken sağ üstte Wave 1/8 görünür. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
using TMPro;
public class GameManager : MonoBehaviour
{
[SerializeField] private int startMoney = 150;
[SerializeField] private int startLives = 20;
[SerializeField] private TMP_Text moneyText;
[SerializeField] private TMP_Text livesText;
private int money;
private int lives;
void OnEnable()
{
Enemy.ReachedBase += OnReachedBase;
Enemy.Killed += OnKilled;
}
void OnDisable()
{
Enemy.ReachedBase -= OnReachedBase;
Enemy.Killed -= OnKilled;
}
void Start()
{
money = startMoney;
lives = startLives;
ShowMoney();
ShowLives();
}
public bool TrySpend(int amount)
{
if (amount > money)
{
return false;
}
money -= amount;
ShowMoney();
return true;
}
public void Earn(int amount)
{
money += amount;
ShowMoney();
}
void OnKilled(Enemy enemy)
{
Earn(enemy.data.reward);
}
void OnReachedBase(Enemy enemy)
{
lives -= enemy.data.damage;
ShowLives();
}
void ShowMoney()
{
moneyText.text = "Money: " + money;
}
void ShowLives()
{
livesText.text = "Lives: " + lives;
}
}
Unity Oyunu: Kule Savunması bölümündeki tüm dersler
Kendi başına pratik yap: Unity playground