您的位置:首页 > 移动开发 > Unity3D

Unity3d中EventTrigger的封装

2015-05-06 10:30 405 查看
因为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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息