因为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