UGUI控件之按钮的监听事件系统

来源:互联网 发布:淘宝电子面单打印教程 编辑:程序博客网 时间:2024/06/01 09:35
/** * 事件监听实现; * 摘自: http://www.xuanyusong.com/archives/3325 */using UnityEngine;using System.Collections;using UnityEngine.EventSystems;using UnityEngine.UI;//FENGTODO//无参数public delegate void Callback();//一个参数public delegate void Callback<T>(T arg1);//两个参数public delegate void Callback<T, U>(T arg1, U arg2);//三个参数public delegate void Callback<T, U, V>(T arg1, U arg2, V arg3);//四个public delegate void Callback<T, U, V, Y>(T arg1, U arg2, V arg3, Y arg4);public class EventTriggerListener : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerEnterHandler,IPointerExitHandler, IPointerUpHandler, ISelectHandler, IUpdateSelectedHandler{    public delegate void VoidDelegate(GameObject go);    public delegate void VoideDeleagte2(GameObject go2, PointerEventData eventData);    public VoidDelegate onClick;    public VoidDelegate onDown;    public VoidDelegate onEnter;    public VoidDelegate onExit;    public VoidDelegate onUp;    public VoidDelegate onSelect;    public VoidDelegate onUpdateSelect;    public VoideDeleagte2 onClick2;    public Callback ClickCallback;    static public EventTriggerListener Get(GameObject go)    {        EventTriggerListener listener = go.GetComponent<EventTriggerListener>();        if (listener == null)        {            listener = go.AddComponent<EventTriggerListener>();        }        return listener;    }    public void OnPointerClick(PointerEventData eventData)    {        if (onClick != null)        {            if (ClickCallback != null)            {                ClickCallback();                //ClickCallback = null;            }            else            {            }            onClick(gameObject);            //if (AudioHelper.instance != null)            //{            //    AudioHelper.instance.PlayVoice(VoiceType.Button_Click);            //}        }        else if (onClick2 != null)        {            onClick2(gameObject, eventData);        }    }    public void OnPointerDown(PointerEventData eventData)    {        if (onDown != null)        {            onDown(gameObject);        }    }    public void OnPointerEnter(PointerEventData eventData)    {        if (onEnter != null)        {            onEnter(gameObject);        }    }    public void OnPointerExit(PointerEventData eventData)    {        if (onExit != null)        {            onExit(gameObject);        }    }    public void OnPointerUp(PointerEventData eventData)    {        if (onUp != null)        {            onUp(gameObject);        }    }    public void OnSelect(BaseEventData eventData)    {        if (onSelect != null)        {            onSelect(gameObject);        }    }    public void OnUpdateSelected(BaseEventData eventData)    {        if (onUpdateSelect != null)        {            onUpdateSelect(gameObject);        }    }}

0 0
原创粉丝点击