ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Unity - AddListener:Button のイベントリスナーをスクリプトから設定する -

初めに

 UnityEvent.AddListener についてまとめます。これを使うと Button のイベントリスナーをスクリプトから設定できます。

AddListener について

docs.unity3d.com

 Button はいままでは Inspector から関数を設定していました。AddListener を使えばスクリプトから設定できるため、シーンの途中で設定されている関数を変えたり、複数の Button の関数をスクリプトから一気に設定したりできます。

AddListener を使って Button の関数を設定する

 今回は Button が押されたら Text が変わるような関数を設定します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;  //Button, Text を使うため追加

public class AddListenerScript : MonoBehaviour
{
    //Button, Text の取得
    public GameObject button;
    private GameObject buttonText;
    Button btn;

    void Start()
    {
      buttonText = button.transform.Find("Text").gameObject;
      btn = button.GetComponent<Button>();

      //AddListenerを使って関数を設定する
      btn.onClick.AddListener(onClickButton);
    }

    //Buttonが押されたときの関数
    void onClickButton()
    {
      Text text = buttonText.GetComponent<Text>();
      text.text = "おされたよ";
    }
}

(実行)

注意点

 AddListener を使って関数を設定した状態でも Inspecter から onClick の関数が設定できてしまいます。AddListener を使う場合は onClick は設定しないようにしましょう。

最後に

 Button を10 個以上使う場合などでは、AddListener を使うと格段に楽になります。普段から AddListener を使っておくことをおすすめします。