UGUI(四)事件系统的封装
来源:互联网 发布:js new操作符 编辑:程序博客网 时间:2024/04/29 17:45
UGUI的事件系统默认使用时,是需要当前的类继承事件接口,就可以在该类中加入它的事件方法,但是在多人开发时这种方式没什么好处。
用过NGUI的或许都知道UIEventListener这个类,因为使用超级方便,直接加入UI对象进行事件注册即可。其实UGUI也可以模仿这种方式进行封装。
代码如下:
- using
UnityEngine; - using
System.Collections; - using
UnityEngine.EventSystems; - public
class UUIEventListener : MonoBehaviour, -
IPointerClickHandler, -
IPointerDownHandler, -
IPointerEnterHandler, -
IPointerExitHandler, -
IPointerUpHandler, -
ISelectHandler, -
IUpdateSelectedHandler, -
IDeselectHandler, -
IDragHandler, -
IEndDragHandler, -
IDropHandler, -
IScrollHandler, -
IMoveHandler - {
-
public delegate voidVoidDelegate(GameObject go); -
public VoidDelegate onClick; -
public VoidDelegate onDown; -
public VoidDelegate onEnter; -
public VoidDelegate onExit; -
public VoidDelegate onUp; -
public VoidDelegate onSelect; -
public VoidDelegate onUpdateSelect; -
public VoidDelegate onDeSelect; -
public VoidDelegate onDrag; -
public VoidDelegate onDragEnd; -
public VoidDelegate onDrop; -
public VoidDelegate onScroll; -
public VoidDelegate onMove; -
-
public object parameter; -
-
public void OnPointerClick(PointerEventData ifeventData) { (onClick null)!= onClick(gameObject); } -
public void OnPointerDown(PointerEventData ifeventData) { (onDown null)!= onDown(gameObject); } -
public void OnPointerEnter(PointerEventData ifeventData) { (onEnter null)!= onEnter(gameObject); } -
public void OnPointerExit(PointerEventData ifeventData) { (onExit null)!= onExit(gameObject); } -
public void OnPointerUp(PointerEventData ifeventData) { (onUp null)!= onUp(gameObject); } -
public void OnSelect(BaseEventData ifeventData) { (onSelect null)!= onSelect(gameObject); } -
public void OnUpdateSelected(BaseEventData ifeventData) { (onUpdateSelect null)!= onUpdateSelect(gameObject); } -
public void OnDeselect(BaseEventData ifeventData) { (onDeSelect null)!= onDeSelect(gameObject); } -
public void OnDrag(PointerEventData ifeventData) { (onDrag null)!= onDrag(gameObject); } -
public void OnEndDrag(PointerEventData ifeventData) { (onDragEnd null)!= onDragEnd(gameObject); } -
public void OnDrop(PointerEventData ifeventData) { (onDrop null)!= onDrop(gameObject); } -
public void OnScroll(PointerEventData ifeventData) { (onScroll null)!= onScroll(gameObject); } -
public void OnMove(AxisEventData ifeventData) { (onMove null)!= onMove(gameObject); } -
-
static public UUIEventListener Get(GameObject go) -
{ -
UUIEventListener listener = go.GetComponent(); -
if (listener null)== listener = go.AddComponent(); -
return listener; -
} - }
使用方式:
- UUIEventListener.Get(btn.gameObject).onClick
= OnClickBtn; - UUIEventListener.Get(btn.gameObject).parameter
= index; -
- private
void OnClickBtn(GameObject go) - {
-
int index int)UUIEventListener.Get(go).parameter;= ( -
Debug.Log("您单击的索引为:" + index); - }
0 0
- UGUI(四)事件系统的封装
- UGUI(四)事件系统的封装
- 封装UGUI的点击事件
- UGUI事件的系统
- UGUI学习笔记(四)UGUI事件系统简述及使用方法总结
- [UnityUI]UGUI的事件系统
- UGUI点击事件的简单封装
- 基于Unity3D(UGUI)的背包系统<四>完结篇
- UGUI 按钮的监听事件系统
- UGUI的按钮监听事件系统
- Unity UGUI事件系统
- UGUI中的事件系统
- 将UGUI的事件封装成NGUI模式
- 【UGUI】UGUI的事件监听
- UGUI(一)List列表的封装
- UGUI(1)List列表的封装
- UGUI(十五)下拉列表的封装
- unity UGUI按钮绑定事件的四种方法
- 机器人在盘内是否会相撞
- 机器人在盘内是否会相撞
- 几步能走出矩阵或者走入循环
- 字符串处理和显示
- 简单模拟与2993相反
- UGUI(四)事件系统的封装
- 货币兑换
- Deep Learning(深度学习)学习笔记整理系列之(二)
- hdu5416
- 昂贵的聘礼
- floyd算法 青蛙
- floyd算法
- 基于netfilter通过iptables过滤http请求使用netlink通知用户空间构造发送http响应(一)
- floyd算法汇率