Menu
CoddyTech

Ü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.

challenge icon

Görev

Kolay

Üssüne ulaşan düşmanlar can azaltır.

  1. EnemyData içine public int damage; ekle.
  2. Enemy içine public static event Action<Enemy> ReachedBase; ekle (using System;). Son kontrol noktasında bu olayı tetikle ve düşmanı yok et.
  3. GameManager içine [SerializeField] private int startLives = 20; ve private int lives; ekle; Start içinde değer ata. Yukarıdaki gibi abone ol; OnReachedBase, canlardan enemy.data.damage kadar 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