EventSystem, Unity’de kullanıcı etkileşimlerini ve UI (Kullanıcı Arayüzü) elemanlarıyla olan tüm etkileşimleri yönetir. Yani, EventSystem sayesinde butonlara tıklama, sürükleme, kaydırma gibi işlemleri tanımlayabiliriz. EventSystem bileşeni, UI ile yapılan her türlü etkileşimi algılayarak kullanıcı deneyimini önemli ölçüde geliştirir.
1. EventSystem Menüsüne Nasıl Ulaşılır?
Unity’de EventSystem bileşeni genellikle bir UI (Kullanıcı Arayüzü) elemanı eklendiğinde otomatik olarak oluşturulur. Ancak manuel olarak da eklemek mümkündür:
- Hierarchy Panelinden Ekleme: Unity’nin Hierarchy panelinde sağ tıklayın ve UI > EventSystem seçeneğini tıklayın. Bu, sahnenize bir EventSystem ekleyecektir.
- Otomatik Oluşturma: UI elemanlarından herhangi birini (örneğin Button, Image) eklediğinizde, Unity otomatik olarak bir EventSystem bileşeni oluşturur.
- Inspector Panelinde Özellikleri Görüntüleme: EventSystem nesnesini seçtiğinizde, sağ tarafta yer alan Inspector panelinde tüm ayarları görebilir ve düzenleyebilirsiniz.
2. EventSystem Çeşitleri
EventSystem bileşeninde temel olarak tek bir yapı vardır, ancak farklı girdi modları ve ayarlarla özelleştirilebilir:
- Standalone Input Module: Bu mod, masaüstü ve mobil platformlarda dokunmatik veya fare girişiyle etkileşim sağlamak için kullanılır. Varsayılan olarak eklenen moddur ve çoğu projede Standalone Input Module kullanılır.
- Touch Input Module: Bu mod, yalnızca dokunmatik cihazlar için optimize edilmiştir. Özellikle mobil platformlarda dokunmatik girişleri algılamak ve işlemek için tercih edilir.
- Keyboard Input Module: Klavye girişleriyle etkileşimi sağlamak için kullanılır. PC oyunları için özellikle menülerde veya formlarda klavye ile gezinti yapılması gereken durumlarda tercih edilir.
3. EventSystem Özellikleri ve Ayrıntılı Açıklamaları
Aşağıda, EventSystem bileşeninin temel özelliklerini, ne işe yaradıklarını ve nasıl kullanıldıklarını ayrıntılı olarak tabloda açıklıyorum:
Özellik | Açıklama | Kullanım Durumları | Programatik Erişim |
---|---|---|---|
First Selected | İlk seçilen UI elemanını belirler. Oyuncu oyuna başladığında veya menüye girdiğinde varsayılan olarak hangi nesnenin seçili olacağını ayarlar. | Menü açıldığında otomatik olarak bir butona odaklanmak için. | eventSystem.firstSelectedGameObject = myButton; |
Send Navigation Events | Klavye veya gamepad gibi cihazlarla menüde gezinti yapılmasını sağlar. | Klavye veya gamepad ile menüdeki butonları seçmek veya değiştirmek için. | eventSystem.sendNavigationEvents = true; |
Drag Threshold | Sürükleme eyleminin ne kadar duyarlı olacağını belirler. Piksel cinsinden bir değer alır. | Sürükleme eylemlerini sınırlandırmak veya duyarlılığı ayarlamak için. | eventSystem.pixelDragThreshold = 5; |
Current Selected GameObject | Şu anda seçili olan UI nesnesini gösterir. | Dinamik olarak kullanıcı etkileşimlerini izlemek için. | eventSystem.currentSelectedGameObject |
Standalone Input Module
Bu mod, fare, klavye ve dokunmatik girişleri destekler. Aşağıdaki tabloda Standalone Input Module’un önemli özelliklerini açıklayacağım:
Özellik | Açıklama | Kullanım Durumları | Programatik Erişim |
---|---|---|---|
Horizontal Axis | Klavye veya gamepad ile yatay eksendeki gezinti için kullanılan tuşları belirler. | Menüde yatay hareketi sağlamak için. | inputModule.horizontalAxis = "Horizontal"; |
Vertical Axis | Klavye veya gamepad ile dikey eksendeki gezinti için kullanılan tuşları belirler. | Menüde dikey hareketi sağlamak için. | inputModule.verticalAxis = "Vertical"; |
Submit Button | Onaylama eylemini gerçekleştirmek için kullanılan tuşu tanımlar. | Menüde veya oyunda seçim yapmak için. | inputModule.submitButton = "Submit"; |
Cancel Button | Menüden çıkmak veya geri dönmek için kullanılan tuşu belirler. | Menüden çıkmak veya geri dönmek için. | inputModule.cancelButton = "Cancel"; |
Input Actions Per Second | Klavye veya gamepad ile saniyede kaç kez giriş yapılabileceğini ayarlar. | Menüde hızlı bir şekilde gezinme ihtiyacı olduğunda. | inputModule.inputActionsPerSecond = 10; |
Repeat Delay | Klavye veya gamepad tuşuna basıldıktan sonra girişlerin tekrarlanması için gereken süreyi belirler. | Menüde hızlı seçim yapılmasını sınırlandırmak için. | inputModule.repeatDelay = 0.5f; |
4. EventSystem Özelliklerinin Değer Aralıkları ve Kullanım Durumları
Aşağıdaki tabloda EventSystem özelliklerinin alabileceği değer aralıklarını ve önerilen değerleri detaylandırdım:
Özellik | Değer Aralığı | Önerilen Değerler | Kullanım Durumları |
---|---|---|---|
First Selected | UI Elemanı Seçimi | Başlangıç butonu veya menüdeki ilk seçenek | Menüye girildiğinde otomatik olarak bir butona odaklanılması gerektiğinde. |
Send Navigation Events | true / false | true | Klavye veya gamepad ile menüde gezinme gerekiyorsa true yapılmalı. |
Drag Threshold | 0 – ∞ (Piksel) | 5 – 20 piksel | Yüksek değerlerde daha az duyarlı, düşük değerlerde daha hassas sürükleme yapılır. |
Horizontal Axis | String (Ekseni tanımlayan tuşlar) | Horizontal | Menüde yatay hareket için standart olarak Horizontal ekseni kullanılır. |
Vertical Axis | String (Ekseni tanımlayan tuşlar) | Vertical | Menüde dikey hareket için Vertical ekseni kullanılır. |
Submit Button | String (Buton Adı) | Submit | Onaylama veya seçme işlemi için Submit kullanılabilir. |
Cancel Button | String (Buton Adı) | Cancel | Menüden çıkmak veya geri dönmek için Cancel kullanılır. |
Input Actions Per Second | 0 – ∞ (Saniyede işlem sayısı) | 5 – 10 | Menüde hızlı hareket için yüksek, daha yavaş gezinti için düşük değerler tercih edilir. |
Repeat Delay | 0 – ∞ (Saniye cinsinden süre) | 0.5 – 1 | Tekrarlayan girişlerin süresini ayarlamak için. |
5. EventSystem Kullanım Alanları ve Dikkat Edilecekler
- Kullanım Alanları:
- UI Etkileşimleri: EventSystem, oyun içi menülerde veya kullanıcı arayüzlerinde butonlara tıklama, seçim yapma, geri dönüş yapma gibi işlemleri yönetir.
- Klavye ve Gamepad Etkileşimi: Menüde gezinmek için klavye ve gamepad kullanımı için gereklidir.
- Mobil Dokunmatik Etkileşimler: Mobil platformlarda dokunma ve kaydırma hareketlerini algılar.
- Dikkat Edilmesi Gerekenler:
- Doğru Input Module Seçimi: PC, konsol veya mobil platformda oynanacaksa uygun Input Module seçilmelidir. Örneğin, dokunmatik cihazlarda
Touch Input Module
, klavye veya gamepad kullanımı içinStandalone Input Module
tercih edilmelidir. - Drag Threshold Değeri: Çok düşük değerler, yanlışlıkla yapılan sürükleme hareketlerine yol açabilirken, çok yüksek değerler kullanıcı deneyimini olumsuz etkileyebilir. Uygun bir drag threshold ayarı yaparak sürükleme hareketini hassas hale getirmek önemlidir.
- First Selected Elemanı: Başlangıçta seçilen elemanın doğru ayarlanması kullanıcı deneyimi açısından önemlidir. Menü açıldığında otomatik olarak odaklanılan bir seçenek kullanıcıyı yönlendirir.
- Doğru Input Module Seçimi: PC, konsol veya mobil platformda oynanacaksa uygun Input Module seçilmelidir. Örneğin, dokunmatik cihazlarda
- Uygulanmaması Gereken Nesneler:
- Statik Nesneler veya Hareket Gerektirmeyen Nesneler: Etkileşim veya seçme işlemi gerektirmeyen nesnelerde EventSystem kullanılmaz.
- Arka Planda Gösterilen Grafikler: EventSystem, sadece kullanıcı etkileşimi gerektiren nesnelerde işlevseldir. Arka plan görselleri veya sabit grafiklerde gereksizdir.
Özet
Önerilen Ayarlar: Menülerde doğru butonların odaklanması, hızlı seçim için doğru input ayarları yapılması kullanıcı deneyimini artırır.
EventSystem Ekleme: UI > EventSystem yoluyla eklenir ve UI ile yapılan her türlü etkileşimi yönetir.
Çeşitleri: Standalone Input Module, Touch Input Module ve Keyboard Input Module olmak üzere farklı giriş modları vardır.
Özellikler ve Kullanımı: First Selected, Send Navigation Events, Drag Threshold gibi özellikleri bulunur.
Kullanım Alanları: UI menüleri, klavye ve gamepad ile gezinme, dokunmatik etkileşimler için kullanılır.
Dikkat Edilmesi Gerekenler: Doğru input module seçimi, drag threshold ayarları ve kullanıcı dostu bir başlangıç seçimi yapılmalıdır.