Unityのボタンクリックイベントをコードで実現

以下にUnityでボタンクリックイベントをコードで実装するサンプルを示します

サンプル

まず、Unityのシーンにボタンを追加し、そのボタンに対してクリックイベントを設定する必要があります。これはUnityのエディタで簡単に行うことができます。

以下は、スクリプトによるクリックイベントの設定方法です。

シーンの構成

コード

using UnityEngine;
using UnityEngine.UI;

public class ButtonClickEvent : MonoBehaviour
{
    public Button button;

    private void Start()
    {
        button.onClick.AddListener(OnClick);
    }

    private void OnClick()
    {
        // ここにクリックされたときの処理を記述します
        Debug.Log("Button clicked!");
    }
}

上記のスクリプトでは、ButtonClickEventクラスにButtonを公開し、StartメソッドでOnClickメソッドをボタンのクリックイベントに登録しています。

OnClickメソッドには、クリックされたときに実行する処理を記述します。ここでは、シンプルにログ出力を行っていますが、実際のプロジェクトでは他の処理を行うことができます。

以上がUnityでボタンクリックイベントをコードで実装するためのサンプルです。

引数がある場合

シーンの構成

スクリプトを空のGameObjectにアタッチします
ボタンを3つ作成します
それぞれのボタンを作成したゲームオブジェクトのインスペクターにアタッチされているスクリプトの3つのボタンのエリアにアタッチ(アウトレット接続)します
プレイモード(実行)で各ボタンをクリックすると、そのメッセージがコンソールに出力されます
クリックは押し下げてから離すという意味であることに注意してください

コード

using UnityEngine;
using UnityEngine.UI;

public class Example : MonoBehaviour
{
    // インスペクタでこれらのButtonsをアタッチすることを確認する
    public Button m_YourFirstButton, m_YourSecondButton, m_YourThirdButton;

    void Start()
    {
        // ButtonをクリックしたときにTaskOnClick/TaskWithParameters/ButtonClickedメソッドを呼び出します
        m_YourFirstButton.onClick.AddListener(TaskOnClick);
        m_YourSecondButton.onClick.AddListener(delegate {TaskWithParameters("Hello"); });
        m_YourThirdButton.onClick.AddListener(() => ButtonClicked(42));
        m_YourThirdButton.onClick.AddListener(TaskOnClick);
    }

    void TaskOnClick()
    {
        // Button1またはButton3がクリックされたときにコンソールに出力する
        Debug.Log("ボタンをクリックしました");
    }

    void TaskWithParameters(string message)
    {
        // Button2がクリックされたときにコンソールに出力します
        Debug.Log(message);
    }

    void ButtonClicked(int buttonNo)
    {
        // Button3がクリックされたときにコンソールに出力します
        Debug.Log("ボタンがクリックされた = " + buttonNo);
    }
}

このコードは、Unityのボタンのクリックイベントに対してリスナーを登録する方法を示しています。

Example クラスは、 MonoBehaviour クラスを継承しています。このクラスはUnityでコンポーネントを実装するための基本クラスであり、各コンポーネントはそれを継承します。

Example クラスには、3つの Button 変数があります。これらの変数は、Unityのエディタでボタンにアタッチされることを想定しています。

Start メソッドでは、それぞれのボタンに対してリスナーを登録しています。リスナーとしては、 TaskOnClickTaskWithParametersButtonClicked メソッドを使用しています。

  • m_YourFirstButton.onClick.AddListener(TaskOnClick); :最初のボタンがクリックされた場合、TaskOnClick メソッドを呼び出します。
  • m_YourSecondButton.onClick.AddListener(delegate {TaskWithParameters("Hello"); }); :2番目のボタンがクリックされた場合、 TaskWithParameters メソッドを呼び出します。このメソッドは、文字列の引数を取ります。
  • m_YourThirdButton.onClick.AddListener(() => ButtonClicked(42)); :3番目のボタンがクリックされた場合、 ButtonClicked メソッドを呼び出します。このメソッドは、整数の引数を取ります。
  • m_YourThirdButton.onClick.AddListener(TaskOnClick); :また、3番目のボタンがクリックされた場合、TaskOnClick メソッドも呼び出します。

TaskOnClick メソッド、TaskWithParameters メソッド、 ButtonClicked メソッドは、ボタンがクリックされた場合に実行されるメソッドです。TaskWithParameters メソッドでは、文字列が引数として渡され、ButtonClicked メソッドでは、整数が引数として渡されます。TaskOnClick メソッドは、単純にコンソールにメッセージを出力するだけです。

これらのリスナーを使用することで、ボタンがクリックされたときに実行されるメソッドを簡単に登録することができます。

参考

C#,Unity,イベント

Posted by hidepon