ボタンのイベントをスクリプトから登録、削除する方法
ボタンのイベントを削除する方法ですが、これは非永続的なイベントしか削除ができません。たしか
using UnityEngine; using UnityEngine.UI; using System.Collections; public class hogehoge: MonoBehaviour { Button btn; void Awake() { btn = this.gameObject.GetComponent<Button>(); //ボタンのイベントを追加する btn.onClick.AddListener( () => BtnAction() ); } void BtnAction() { Debug.Log( "btnAction" ); this.RemoveBtnAction(); } void RemoveBtnAction() { //ボタンのイベントをすべて削除する btn.onClick.RemoveAllListeners(); } }
非永続的なイベントとはAddListenerで追加されたイベントのことを指していて、GameObjectのInspectorのButtonコンポーネントにスクリプトをアタッチしてイベント登録されたイベントに関しては永続的なイベントとなるので、RemoveAllListenersを使っても削除することができません。