CodeBlanks Logo Icon CodeBlanks

Challenge 4: UI button

Write a UI script that calls Debug.Log when a button is clicked.

UI Button and onClick Event

In the Unity UI system, the Button component captures user interaction. Methods to invoke upon clicking are dynamically attached using button.onClick.AddListener(Task). This keeps UI code clean and decoupled.

Button button = GetComponent<Button>();
button.onClick.AddListener(StartGame);

Practice Attach Button Listener

Attach the listener using buton.onClick.AddListener(Tiklandi); and trigger it with buton.Click();.

Starter code

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
    }
}

Sample solution

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();
    }
}

Expected output

Butona basildi

Practice Start Game via Button

Assign baslatButonu.action = () => Debug.Log("Oyun Basladi"); and trigger the action with baslatButonu.Click();.

Starter code

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
    }
}

Sample solution

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();
    }
}

Expected output

Oyun Basladi

Questions and answers

Review the lesson questions together with their answers. To test yourself, solve the lesson interactively.

1 Which syntax is used in Unity through code to attach a listener method to a UI Button click event?

  • button.onClick.AddListener(Dinleyici); Correct answer
  • button.AddTrigger(Dinleyici);
  • button.onPress += Dinleyici;
  • button.ClickEvent.Subscribe(Dinleyici);

Explanation: In Unity, onClick.AddListener() is used to register listeners to a UI button's UnityEvent.

2 Button Click Listener

Question
baslatButonu.onClick.____(OyunuBaslat);
Answer
baslatButonu.onClick.AddListener(OyunuBaslat);

Explanation: The AddListener function is called to bind a method to the click event.

3 UI Interaction Terminology

Term Meaning
Button UI component detecting user clicks
onClick UnityEvent triggered on button click
AddListener Registers method to run on event
RemoveListener Removes previously added listener

All lessons in Intermediate