uGUIでボタンのクリックイベントを取得
Unity 4.6から追加されたUIシステム(通称uGUI)でボタンのクリックイベントを取得
開発環境
- OS X 10.6.8
- Unity 4.6.0
手順
- GameObject -> UI -> Buttonでシーン上にボタンを作成
- ボタンクリック時のコールバック関数を作成
using UnityEngine;
public class TestButtonClick : MonoBehaviour {
public void ClickTest () {
Debug.Log ("Clicked.");
}
} - 2.で作成したスクリプトを1.で作成したボタンにコンポーネントとして追加
- 1.で作成したボタンのInspector上で、ButtonコンポーネントのOnClick(UnityEngine.UI.ButtonClickedEvent)に対象としてButtonオブジェクト(自分自身)を追加
- No Function -> TestButtonClick -> ClickTest ()
- アプリを起動してボタンを押下すると、ClickTest ()が実行される
補足:Inspectorで指定できるコールバック関数の条件
- public void
- 引数は1つ以下
- 引数で使える型はfloat、int、string、bool、Object
補足:スクリプトからコールバック関数を登録
Inspector上からだけではなくスクリプトからも登録可能
ただし、AddListenerを使って(non persistent)コールバック関数を設定した場合は「Runtime Only」となるようです
Inspectorを使って(persistent)設定した場合は「Off」「Editor And Runtime」「Runtime Only」から選択できるようです
http://docs.unity3d.com/460/Documentation/ScriptReference/Events.UnityEvent.AddListener.html
http://docs.unity3d.com/460/Documentation/ScriptReference/Events.UnityEventCallState.html
using UnityEngine;
using UnityEngine.UI;
public class TestButtonClick : MonoBehaviour {
void Start () {
Button button = this.GetComponent <Button> ();
button.onClick.AddListener (() => {
Debug.Log ("Clicked.");
});
}
}