Meydan okuma 4: UI butonu
- Oyun Geliştirme kursu
- Orta seviye
- Ders 82/83
- 5 dk
Bir butona tıklanınca Debug.Log çağıran UI scripti yazarsın.
UI Button ve onClick Olayı
Unity UI sisteminde oyuncu etkileşimini yakalamak için Button bileşeni kullanılır. Butona tıklandığında tetiklenecek fonksiyonlar button.onClick.AddListener(Gorev) metodu ile dinamik olarak bağlanır. Böylece arayüz kodları temiz ve modüler kalır.
Button buton = GetComponent<Button>();
buton.onClick.AddListener(OyunuBaslat);Uygulama Buton Dinleyicisi Bağla
buton.onClick.AddListener(Tiklandi); çağrısıyla dinleyiciyi bağla ve buton.Click(); ile tetikle.
Başlangıç kodu
using System;
public class Button
{
public Action onClickAction;
public void AddListener(Action action) { onClickAction += action; }
public void Click() { onClickAction?.Invoke(); }
public Button onClick => this;
}
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Tiklandi()
{
Debug.Log("Butona basildi");
}
public static void Main()
{
Button buton = new Button();
// Dinleyici bagla ve tiklama metodunu cagir
}
}Örnek çözüm
using System;
public class Button
{
public Action onClickAction;
public void AddListener(Action action) { onClickAction += action; }
public void Click() { onClickAction?.Invoke(); }
public Button onClick => this;
}
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Tiklandi()
{
Debug.Log("Butona basildi");
}
public static void Main()
{
Button buton = new Button();
buton.onClick.AddListener(Tiklandi);
buton.Click();
}
}Beklenen çıktı
Butona basildi
Uygulama Buton ile Oyun Başlat
baslatButonu.action = () => Debug.Log("Oyun Basladi"); atamasını yap ve baslatButonu.Click(); ile aksiyonu tetikle.
Başlangıç kodu
using System;
public class Button
{
public Action action;
public void Click() { action?.Invoke(); }
}
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Main()
{
Button baslatButonu = new Button();
// Buton aksiyonunu tanimla ve tiklama cagir
}
}Örnek çözüm
using System;
public class Button
{
public Action action;
public void Click() { action?.Invoke(); }
}
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Main()
{
Button baslatButonu = new Button();
baslatButonu.action = () => Debug.Log("Oyun Basladi");
baslatButonu.Click();
}
}Beklenen çıktı
Oyun Basladi
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Unity'de kod üzerinden bir UI Button'un tıklama olayına bir dinleyici fonksiyon eklemek için hangi sözdizimi kullanılır?
- button.onClick.AddListener(Dinleyici); Doğru cevap
- button.AddTrigger(Dinleyici);
- button.onPress += Dinleyici;
- button.ClickEvent.Subscribe(Dinleyici);
Açıklama: Unity'de UI butonlarının UnityEvent yapısına dinleyici eklemek için onClick.AddListener() kullanılır.
2 Buton Tıklama Dinleyicisi
baslatButonu.onClick.____(OyunuBaslat);
baslatButonu.onClick.AddListener(OyunuBaslat);
Açıklama: Tıklama olayına metot bağlamak için AddListener fonksiyonu çağrılır.
3 UI Etkileşim Terimleri
| Kavram | Anlamı |
|---|---|
Button |
Tıklamaları algılayan UI bileşeni |
onClick |
Tıklandığında tetiklenen UnityEvent |
AddListener |
Olaya çalışacak fonksiyonu ekleme |
RemoveListener |
Ekli dinleyiciyi kaldıran fonksiyon |