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

Unity游戏UI框架(八):监听事件系统

2017-06-19 22:26 746 查看
在这里会用到UIEventListener处理事件,

Unity官方文档:http://docs.unity3d.com/460/Documentation/Manual/SupportedEvents.html

UIEventListener API简介,详细的了解官方文档

指针进入

public void OnPointerEnter(PointerEventData eventData);

指针退出

public void OnPointerExit(PointerEventData eventData);

指针按下

public void OnPointerDown(PointerEventData eventData);

指针释放(可能按下时的指针位置跟释放时的指针位置不同,这里指的是按下时指针指着的物体)

public void OnPointerUp(PointerEventData eventData);

在同一物体上按下并释放

public void OnPointerClick(PointerEventData eventData);

拖拽时的初始化,跟IPointerDownHandler差不多,在按下时调用

public void OnInitializePotentialDrag(PointerEventData eventData);

开始拖拽

public void OnBeginDrag(PointerEventData eventData);

拖拽中

public void OnDrag(PointerEventData eventData);

拖拽结束(被拖拽的物体调用)

public void OnEndDrag(PointerEventData eventData);

拖拽结束(拖拽结束后的位置(即鼠标位置)如果有物体,则那个物体调用)

public void OnDrop(PointerEventData eventData);

滚轮滚动

public void OnScroll(PointerEventData eventData);

被选中的物体每帧调用

public void OnUpdateSelected(BaseEventData eventData);

物体被选中时

public void OnSelect(BaseEventData eventData);

物体从选中到取消选中时

public void OnDeselect(BaseEventData eventData);

物体移动时(与InputManager里的Horizontal和Vertica按键相对应),前提条件是物体被选中

public void OnMove(AxisEventData eventData);

提交按钮被按下时(与InputManager里的Submit按键相对应,PC上默认的是Enter键),前提条件是物体被选中

public void OnSubmit(BaseEventData eventData);

取消按钮被按下时(与InputManager里的Cancel按键相对应,PC上默认的是Esc键),前提条件是物体被选中

public void OnCancel(BaseEventData eventData);

大家可根据自己项目的需求继续拓展EventTriggerListener类,这里简单实现

/// <summary>
/// 事件触发监听
/// 实现对于任何对象的监听处理
/// </summary>
public class EventTriggerListener : EventTrigger
{
/// <summary>
/// 委托
/// </summary>
/// <param name="Go"></param>
public delegate void VoidDelegate(GameObject Go);

public VoidDelegate onClick;
public VoidDelegate onDown;
public VoidDelegate onEnter;
public VoidDelegate onExit;
public VoidDelegate onUp;
public VoidDelegate onSelect;
public VoidDelegate onUpdateSelect;

/// <summary>
/// 得到“监听器”组件
/// </summary>
/// <param name="go">监听的游戏对象</param>
/// <returns>
/// 监听器
/// </returns>
public static EventTriggerListener Get(GameObject go)
{
EventTriggerListener lister = go.GetComponent<EventTriggerListener>();
if (!lister)
{
lister = go.AddComponent<EventTriggerListener>();
}
return lister;
}

/// <summary>
/// 在同一物体上按下并释放:单击
/// </summary>
/// <param name="eventData"></param>
public override void OnPointerClick(PointerEventData eventData)
{
if (onClick != null)
{
onClick(gameObject);
}
}

/// <summary>
/// 指针按下
/// </summary>
/// <param name="eventData"></param>
public override void OnPointerDown(PointerEventData eventData)
{
if (onDown != null)
{
onDown(gameObject);
}
}

/// <summary>
/// 指针进入
/// </summary>
/// <param name="eventData"></param>
public override void OnPointerEnter(PointerEventData eventData)
{
if (onEnter != null)
{
onEnter(gameObject);
}
}

/// <summary>
/// 指针退出
/// </summary>
/// <param name="eventData"></param>
public override void OnPointerExit(PointerEventData eventData)
{
if (onExit != null)
{
onExit(gameObject);
}
}

/// <summary>
/// 指针释放(可能按下时的指针位置跟释放时的指针位置不同,这里指的是按下时指针指着的物体)
/// </summary>
/// <param name="eventData"></param>
public override void OnPointerUp(PointerEventData eventData)
{
if (onUp != null)
{
onUp(gameObject);
}
}

/// <summary>
/// 物体被选中时
/// </summary>
/// <param name="eventBaseData"></param>
public override void OnSelect(BaseEventData eventBaseData)
{
if (onSelect != null)
{
onSelect(gameObject);
}
}

/// <summary>
/// 被选中的物体每帧调用
/// </summary>
/// <param name="eventBaseData"></param>
public override void OnUpdateSelected(BaseEventData eventBaseData)
{
if (onUpdateSelect != null)
{
onUpdateSelect(gameObject);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: