Üsse Ulaş
Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 3 / 25.
Son yol noktasındaki bir düşman üsse ulaştı: düşman gider ve üs can kaybeder. Canlar GameManager'a aittir. Yakında düşmanlar prefab'lardan oluşturulacak ve bir prefab sahnedeki GameManager'a başvuramayacağı için düşman, statik bir olay ile haber verir. Olay Enemy sınıfına aittir; bu nedenle GameManager bir kez abone olur ve daha sonra oluşturulanlar da dahil her düşmandan haberdar olur. Düşman olayı ReachedBase?.Invoke(this); ile tetikler: ?, kimse dinlemiyorsa olayı atlar ve this, dinleyiciye hangi türün ulaştığını bildirir.
void OnEnable()
{
Enemy.ReachedBase += OnReachedBase;
}
void OnDisable()
{
Enemy.ReachedBase -= OnReachedBase;
}Statik bir olay oyun boyunca varlığını sürdürür; bu nedenle her += için bir -= gerekir: ayrılmamış ve yok edilmiş bir GameManager yine de çağrılır.
Görev
KolayÜssüne ulaşan düşmanlar can azaltır.
EnemyDataiçinepublic int damage;ekle.Enemyiçinepublic static event Action<Enemy> ReachedBase;ekle (using System;). Son kontrol noktasında bu olayı tetikle ve düşmanı yok et.GameManageriçine[SerializeField] private int startLives = 20;veprivate int lives;ekle;Startiçinde değer ata. Yukarıdaki gibi abone ol;OnReachedBase, canlardanenemy.data.damagekadar azaltır.
“Oyna” düğmesine bas: iki düşman da üste ulaşınca kaybolur. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
// Daha sonra eklenecekler: canlar, para, HUD, kazanma ve kaybetme.
public class GameManager : MonoBehaviour
{
}
Unity Oyunu: Kule Savunması bölümündeki tüm dersler
Kendi başına pratik yap: Unity playground