読者です 読者をやめる 読者になる 読者になる

チラ裏Unity

主にUnityについての備忘録ですが誰か様の為になれば

uGUIでボタンのクリックイベントを取得

Unity 4.6から追加されたUIシステム(通称uGUI)でボタンのクリックイベントを取得

 

開発環境

  • OS X 10.6.8
  • Unity 4.6.0

 

手順

  1. GameObject -> UI -> Buttonでシーン上にボタンを作成
  2. ボタンクリック時のコールバック関数を作成
    using UnityEngine;

    public class TestButtonClick : MonoBehaviour {
        
        public void ClickTest () {
            Debug.Log ("Clicked.");
        }
    }

  3. 2.で作成したスクリプトを1.で作成したボタンにコンポーネントとして追加
  4. 1.で作成したボタンのInspector上で、ButtonコンポーネントのOnClick(UnityEngine.UI.ButtonClickedEvent)に対象としてButtonオブジェクト(自分自身)を追加

    f:id:hwks:20141210015604p:plain

  5. No Function -> TestButtonClick -> ClickTest ()
  6. アプリを起動してボタンを押下すると、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.");
        });
    }
}