C# Delegate ve Event Yapıları: Etkinlik Temelli Programlama
Paylaşan: Unity Eğitim
07 September 2025
3 dakika okuma
200 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.
← Önceki yazı
Unity'de AssetDatabase.CreateAsset() Metodu ile Varlık Oluşturma
Sonraki yazı →
Unity ile Oyunlardan Reklam Geliri Elde Etmenin 7 Yolu (2026
🧠 Ders Sonu Değerlendirme Testi
Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.
Yorumlar (0)
İlk yorumu siz yapın!