CodeBlanks Logo Icon CodeBlanks

Meydan okuma 4: UI butonu

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

Player.cs
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

Player.cs
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

Player.cs
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

Player.cs
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

Soru
baslatButonu.onClick.____(OyunuBaslat);
Cevap
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

Orta seviye bölümündeki tüm dersler