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

Unity'de EventSystem.current.currentSelectedGameObject ile Oyuncu Etkileşimini Yönetme

Paylaşan: Unity Eğitim 02 September 2025 4 dakika okuma 70 görüntülenme

Merhaba Unity geliştiricileri! Bu yazıda, Unity oyun motorunda kullanıcı arayüzü (UI) ve oyun nesneleriyle etkileşimleri yönetmek için oldukça kullanışlı bir özellik olan EventSystem.current.currentSelectedGameObject'ü detaylı bir şekilde inceleyeceğiz. Bu özellik, oyuncunun şu anda hangi UI öğesini veya oyun nesnesini seçtiğini belirlemenizi sağlar ve bu bilgiyi oyun mantığınıza entegre etmenize olanak tanır.

EventSystem Nedir?


Unity'deki EventSystem, oyuncuların fare, klavye veya dokunmatik ekran gibi giriş cihazlarıyla oyun nesneleriyle etkileşim kurmasını sağlayan bir bileşendir. EventSystem, UI öğelerinin yanı sıra diğer oyun nesnelerinin de tıklanabilir, seçilebilir ve diğer etkileşim türlerine cevap verebilir olmasını sağlar. Bu sistem, PointerEventData gibi olayları kullanarak girişleri işler ve bunları ilgili oyun nesnelerine iletir.

currentSelectedGameObject'ün Rolü


EventSystem.current.currentSelectedGameObject özelliği, şu anda EventSystem tarafından seçili olan oyun nesnesine bir referans döndürür. Bu, oyuncunun fareyle tıkladığı, bir tuşa bastığı veya dokunmatik ekranda bir yere dokunduğu son nesneyi temsil eder. Bu özellik, oyun içi menüler, envanter sistemleri ve diğer etkileşimli unsurları oluşturmak için oldukça değerlidir.

Önemli Not:


Bu özelliğin doğru çalışması için, oyun nesnelerinizin EventSystem tarafından algılanabilir olması gerekir. Bunun için genellikle nesnelerinize bir Graphic Raycaster (UI öğeleri için) veya Physics Raycaster (3B oyun nesneleri için) bileşeni eklemeniz gerekir. Ayrıca, nesnelerinizin bir Collider bileşenine sahip olması da gereklidir.

Kod Örneği: UI Öğesi Seçimi


Aşağıdaki kod örneği, bir butona tıklandığında currentSelectedGameObject'ü kullanarak hangi butonun tıklandığını konsola yazdırır:

using UnityEngine;
using UnityEngine.UI;

public class ButtonSelection : MonoBehaviour
{
public void OnButtonClicked()
{
GameObject selectedObject = EventSystem.current.currentSelectedGameObject;
if (selectedObject != null)
{
Debug.Log("Seçilen nesne: " + selectedObject.name);
}
else
{
Debug.Log("Hiçbir nesne seçilmedi.");
}
}
}


Bu kodu bir butonun OnClick() eventine atamanız yeterlidir. Butonun GameObject'una eklediğiniz bu script, butona tıklandığında hangi nesnenin seçili olduğunu konsolda gösterir.

Kod Örneği: 3B Nesne Seçimi


3B nesneler için, Physics Raycaster kullanmanız ve currentSelectedGameObject'ü OnMouseDown() veya OnMouseUp() gibi olaylarla birlikte kullanmanız gerekir. Bu, biraz daha karmaşık bir yapı gerektirir ve Raycast işlemini kullanarak seçilen nesneyi belirlemek zorunda kalırsınız. Aşağıdaki örnek, fare tıklaması ile seçilen nesneyi konsolda gösterir:

using UnityEngine;

public class ObjectSelection : MonoBehaviour
{
void OnMouseDown()
{
GameObject selectedObject = EventSystem.current.currentSelectedGameObject;
if (selectedObject != null)
{
Debug.Log("Seçilen 3B nesne: " + selectedObject.name);
}
else
{
Debug.Log("Hiçbir 3B nesne seçilmedi.");
}
}
}


Bu kod, 3B nesneye tıklandığında hangi nesnenin seçili olduğunu konsolda gösterir. Ancak, bu kod sadece EventSystem'in seçtiği nesneyi gösterir. Daha gelişmiş bir 3B nesne seçimi için, Physics.Raycast kullanarak kendi seçme mantığınızı oluşturmanız gerekebilir.

Hata Ayıklama İpuçları


EventSystem.current.currentSelectedGameObject ile çalışırken sık karşılaşılan sorunlardan biri, null referans hatasıdır. Bu genellikle EventSystem'in doğru şekilde ayarlanmamasından veya seçilen nesnenin EventSystem tarafından algılanabilir olmamasından kaynaklanır. Hata ayıklama için:

  • Oyun sahnenizde bir EventSystem nesnesi olduğundan emin olun.

  • Seçilebilir nesnelerinizin Graphic Raycaster veya Physics Raycaster bileşenlerine ve Collider bileşenlerine sahip olduğundan emin olun.

  • EventSystem'in doğru şekilde yapılandırıldığından emin olun (örneğin, Standalone Input Module'ün etkin olduğundan emin olun).


Sonuç


EventSystem.current.currentSelectedGameObject, Unity'de kullanıcı arayüzü ve oyun nesneleriyle etkileşimleri yönetmek için güçlü bir araçtır. Bu özellik, oyunlarınıza etkileşimli ve dinamik unsurlar eklemenize yardımcı olur. Ancak, doğru kullanımı için EventSystem'in nasıl çalıştığını ve Raycast işlemlerinin nasıl gerçekleştiğini anlamanız önemlidir.

🧠 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!