UNITY之EventTrigger,EventListener

    xiaoxiao2025-07-24  7

    UIEventListener.cs 对一些常用的事件进行了封装和继承。   一,常用事件:   void OnClick ():点击事件;   void OnDoubleClick ():二次或多次点击事件   void OnHover (bool isOver):手指覆盖事件;   void OnPress (bool isPressed):手指点击事件,包含按下、抬起;isPressed为按下,false为抬起;   void OnSelect (bool selected):是否被选择;   void OnDrag (Vector2 delta):手指滑动事件;   void OnKey (KeyCode key):“键”事件;   二,实质:   这些监听事件都是建立在委托事件上:   publicdelegatevoid BoolDelegate (GameObject go, bool state);   public BoolDelegate onPress;   三,前提条件:   UIEventListener的GameObejct包含Colllider;   四,怎使用:   1,静态关联方法:   UIEventListener.Get(GameObject).OnPress += pressList;   2,直接重写:   脚本所在的GameObject包含Colllider,直接重写监听事件:   publicclass SceneTwo : MonoBehaviour {   void OnPress (bool pressed)   {   Debug.Log(“OnPress ”+enabled+“   ”+NGUITools.GetActive(gameObject)+“   ”+pressed);   if (enabled && NGUITools.GetActive(gameObject))   {   }   }   void OnDrag (Vector2 delta)   {   Debug.Log(“OnDrag ”+enabled+“   ”+NGUITools.GetActive(gameObject)+“   ”+delta);   if (enabled && NGUITools.GetActive(gameObject))   {   }   }  }

    //Demo1

    using UnityEngine; using System.Collections; public class EventTriggerTest : MonoBehaviour {

        public  GameObject button;     // Use this for initialization     void Start () {              UIEventTrigger ue = button.AddComponent <UIEventTrigger> ();         ue.onRelease.Add (new EventDelegate (this, "ReleasedButton"));         ue.onPress.Add (new EventDelegate (this,"PressButton"));         ue.onClick.Add(new EventDelegate(this,"MyClick") );         ue.onPress [0].parameters [0] = new EventDelegate.Parameter ();         ue.onPress [0].parameters [0].obj = button;         ue.onClick [0].parameters [0] = new EventDelegate.Parameter ();         ue.onClick [0].parameters [0].obj = button;     }          // Update is called once per frame     void Update () {          }     void MyClick(GameObject obj){         print (obj.name+" : "+"click");     }     void PressButton(GameObject obj){              print (obj.name+" : "+"pressButton");     }     void ReleasedButton(GameObject  obj){              print (obj.name+" : "+"ReleasedButton");     } }

    //Demo2

    public class EventListener : MonoBehaviour {

        // Use this for initialization     void Start () {         foreach (Transform item in transform ){             UIEventListener.Get (item .gameObject ).onClick = MyClick;         }     }          // Update is called once per frame     void Update () {          }     void MyClick(GameObject obj){         print (obj.name+" : "+"click");     }

    }

    转载请注明原文地址: https://ju.6miu.com/read-1301017.html
    最新回复(0)