Unity3d中EventTrigger的封装

来源:互联网 发布:闻喜天际网络 编辑:程序博客网 时间:2024/06/13 00:26

因为unity中新增的UGUI中的Button只有onClick事件,但如果想要丰富Button的点击事件,就要使用到EventTrigger,

但是自带的用着不方便,所以就对他进行了封装。


废话不多说,上代码:

自定义了一个类继承自上面提到的:EventTrigger


using UnityEngine;using System.Collections;using UnityEngine.EventSystems;public class EventTriggerListener: UnityEngine.EventSystems.EventTrigger{public delegate void VoidDelegate();public delegate void BoolDelegate(bool state);public delegate void FloatDelegate(float delta);public delegate void VectorDelegate(Vector2 delta);public delegate void ObjectDelegate(GameObject obj);public delegate void KeyCodeDelegate(KeyCode key);public VoidDelegate onClick;public VoidDelegate onDown;public VoidDelegate onEnter;public VoidDelegate onExit;public VoidDelegate onUp;public VoidDelegate onSelect;public VoidDelegate onUpdateSelect;static public EventTriggerListener Get(Transform transform){EventTriggerListener listener = transform.GetComponent<EventTriggerListener>();if (listener == null) listener = transform.gameObject.AddComponent<EventTriggerListener>();return listener;}public override void OnPointerClick(PointerEventData eventData){if (onClick != null) onClick();}public override void OnPointerDown(PointerEventData eventData){if (onDown != null) onDown();}public override void OnPointerEnter(PointerEventData eventData){if (onEnter != null) onEnter();}public override void OnPointerExit(PointerEventData eventData){if (onExit != null) onExit();}public override void OnPointerUp(PointerEventData eventData){if (onUp != null) onUp();}public override void OnSelect(BaseEventData eventData){if (onSelect != null) onSelect();}public override void OnUpdateSelected(BaseEventData eventData){if (onUpdateSelect != null) onUpdateSelect();}}

下面是代码的使用:

public Button click;void Start () {EventTriggerListener.Get(click.transform).onClick += Click;EventTriggerListener.Get(click.transform).onDown += ClickDela;}public void Click (){bar = this.GetComponent<Scrollbar>();bar.value = 1;}public void ClickDela(){bar = this.GetComponent<Scrollbar>();bar.value = 0.5f;}



详细请参考:

http://www.taikr.com/article/182

0 0
原创粉丝点击