Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

C# Delegate ve Event Yapıları: Etkinlik Temelli Programlama

Paylaşan: Unity Eğitim 07 September 2025 3 dakika okuma 199 görüntülenme

Merhaba Unity geliştiricileri! Bu yazıda C#’ın güçlü araçlarından olan Delegate ve Event yapılarını detaylı bir şekilde inceleyeceğiz. Bu kavramlar, oyun geliştirme dahil birçok alanda, özellikle etkinlik tabanlı programlamada kritik bir rol oynar.

Delegate'ler: Fonksiyonlara Değer Atamak


Bir delegate, bir fonksiyonu (metodu) temsil eden bir tür olarak düşünülebilir. Bir değişkene bir fonksiyon atayabilmenizi sağlar. Bu, fonksiyonları parametre olarak geçirmenize veya fonksiyonları bir koleksiyon içinde saklamanıza olanak tanır. Delegate'ler, belirli bir imzaya (dönüş tipi ve parametreler) sahip fonksiyonları temsil ederler.

Delegate Tanımlama


Bir delegate, delegate anahtar kelimesi kullanılarak tanımlanır. Aşağıdaki örnek, bir tam sayı alan ve tam sayı döndüren bir delegate'i tanımlar:
public delegate int MyDelegate(int x);

Bu kod, MyDelegate adında bir delegate türü tanımlar. Bu delegate, bir tam sayı alan ve bir tam sayı döndüren herhangi bir fonksiyonu temsil edebilir.

Delegate Kullanımı


Bir delegate örneği oluşturup, ona bir fonksiyon atayabiliriz:
MyDelegate myDelegate = MyFunction; // MyFunction fonksiyonuna atanır.

int result = myDelegate(5); // MyFunction fonksiyonu çağrılır.


MyFunction fonksiyonunun imzası (tam sayı alıp tam sayı döndürme), MyDelegate delegate'inin imzasıyla eşleşmelidir.
int MyFunction(int x) {
return x * 2;
}

Event'ler: Etkinlikleri Yönetmek


Event'ler, bir nesnede bir şey olduğunda (örneğin, bir butona tıklandığında) diğer nesnelerin haberdar olmasını sağlayan bir mekanizmadır. Event'ler, delegate'leri kullanarak çalışır. Bir event, belirli bir delegate türünden bir olay tetiklendiğinde çağrılacak fonksiyonları (event handler'lar) tutar.

Event Tanımlama


Bir event, event anahtar kelimesi kullanılarak tanımlanır:
public event MyDelegate MyEvent;

Bu kod, MyEvent adında bir event tanımlar. Bu event, MyDelegate delegate'i türünden fonksiyonları (event handler'ları) tutacaktır.

Event Kullanımı


Bir event'e event handler'ı eklemek için += operatörü kullanılır. Bir event handler'ı kaldırmak için -= operatörü kullanılır:
// Event handler'ı ekleme
MyEvent += MyEventHandler;

// Event tetikleme
MyEvent?.Invoke(10); // Null kontrolü önemlidir

// Event handler'ı kaldırma
MyEvent -= MyEventHandler;


MyEventHandler fonksiyonu, MyEvent tetiklendiğinde çağrılacaktır.
void MyEventHandler(int x) {
Debug.Log("Event tetiklendi: " + x);
}

Delegate ve Event Uygulamaları


Delegate ve event'ler, oyun geliştirmede birçok farklı senaryoda kullanılır. Örneğin:

  • Oyuncu girdileri: Oyuncunun bir tuşa basması, fare hareketleri veya diğer girdiler, event'ler aracılığıyla işlenebilir.

  • Collision Detection: Çarpışma tespiti, event'ler kullanılarak oyun nesneleri arasında haberleşme sağlamak için kullanılabilir.

  • UI etkileşimleri: Buton tıklamaları, menü seçimi gibi UI etkileşimleri event'ler ile yönetilebilir.

  • Game State Management: Oyun durumundaki değişiklikleri yönetmek için event'ler kullanılabilir.


Özet


Delegate ve event'ler, C#’ta güçlü ve esnek araçlardır. Bu yapılar, etkinlik tabanlı programlamanın temelini oluşturur ve özellikle oyun geliştirmede, kodun daha modüler, okunabilir ve bakımı kolay olmasını sağlar. Bu yazıda öğrendiklerinizi kullanarak, daha karmaşık ve etkileşimli oyunlar geliştirebilirsiniz.

 

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!