Compteur de vagues
Leçon 24 sur 25 du cours Jeu Unity : défense de tours de Coddy.
Le HUD affiche le numéro de la vague. Le spawner le connaît, et le GameManager l’affiche, alors le spawner déclenche un événement C#, WaveStarted, avec la vague et le nombre de vagues. Contrairement aux événements statiques des ennemis, il appartient à un seul spawner, et le GameManager s’y abonne via son champ spawner :
void OnEnable()
{
spawner.WaveStarted += ShowWave;
}Un Action<int, int> transmet deux int, donc ShowWave en prend deux : void ShowWave(int wave, int total).
Défi
MoyenAffiche la vague en cours.
- Dans
WaveSpawner, ajoutepublic event Action<int, int> WaveStarted;(using System;) et déclenche l’événement aveci + 1etwaves.Countau début d’une vague. - Dans
GameManager, ajoute les champs sérialisésspawner(WaveSpawner) etwaveText(TMP_Text). Abonne-toi dansOnEnable, désabonne-toi dansOnDisableet afficheWave 1/8.
Appuie sur « Jouer » : Wave 1/8 s’affiche en haut à droite au début de la première vague. Puis appuie sur « Vérifier ».
Essayez vous-même
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;
}
}
Toutes les leçons de Jeu Unity : défense de tours
Entraînez-vous par vous-même : Playground Unity