UGUI(四)事件系统的封装

UGUI(四)事件系统的封装

  (2015-02-05 11:48:51)
标签: 

ugui事件

 

ugui注册事件

分类: UGUI

 

UGUI的事件系统默认使用时,是需要当前的类继承事件接口,就可以在该类中加入它的事件方法,但是在多人开发时这种方式没什么好处。

用过NGUI的或许都知道UIEventListener这个类,因为使用超级方便,直接加入UI对象进行事件注册即可。其实UGUI也可以模仿这种方式进行封装。

 

代码如下:

  1. using UnityEngine;  
  2. using System.Collections;  
  3. using UnityEngine.EventSystems;  
  4. public class UUIEventListener : MonoBehaviour,  
  5.                                 IPointerClickHandler,  
  6.                                 IPointerDownHandler,  
  7.                                 IPointerEnterHandler,  
  8.                                 IPointerExitHandler,  
  9.                                 IPointerUpHandler,  
  10.                                 ISelectHandler,  
  11.                                 IUpdateSelectedHandler,  
  12.                                 IDeselectHandler,  
  13.                                 IDragHandler,  
  14.                                 IEndDragHandler,  
  15.                                 IDropHandler,  
  16.                                 IScrollHandler,  
  17.                                 IMoveHandler  
  18. {  
  19.     public delegate void VoidDelegate(GameObject go);  
  20.     public VoidDelegate onClick;  
  21.     public VoidDelegate onDown;  
  22.     public VoidDelegate onEnter;  
  23.     public VoidDelegate onExit;  
  24.     public VoidDelegate onUp;  
  25.     public VoidDelegate onSelect;  
  26.     public VoidDelegate onUpdateSelect;  
  27.     public VoidDelegate onDeSelect;  
  28.     public VoidDelegate onDrag;  
  29.     public VoidDelegate onDragEnd;  
  30.     public VoidDelegate onDrop;  
  31.     public VoidDelegate onScroll;  
  32.     public VoidDelegate onMove;  
  33.   
  34.     public object parameter;  
  35.   
  36.     public void OnPointerClick(PointerEventData eventData) { if (onClick != null) onClick(gameObject); }  
  37.     public void OnPointerDown(PointerEventData eventData) { if (onDown != null) onDown(gameObject); }  
  38.     public void OnPointerEnter(PointerEventData eventData) { if (onEnter != null) onEnter(gameObject); }  
  39.     public void OnPointerExit(PointerEventData eventData) { if (onExit != null) onExit(gameObject); }  
  40.     public void OnPointerUp(PointerEventData eventData) { if (onUp != null) onUp(gameObject); }  
  41.     public void OnSelect(BaseEventData eventData) { if (onSelect != null) onSelect(gameObject); }  
  42.     public void OnUpdateSelected(BaseEventData eventData) { if (onUpdateSelect != null) onUpdateSelect(gameObject); }  
  43.     public void OnDeselect(BaseEventData eventData) { if (onDeSelect != null) onDeSelect(gameObject); }  
  44.     public void OnDrag(PointerEventData eventData) { if (onDrag != null) onDrag(gameObject); }  
  45.     public void OnEndDrag(PointerEventData eventData) { if (onDragEnd != null) onDragEnd(gameObject); }  
  46.     public void OnDrop(PointerEventData eventData) { if (onDrop != null) onDrop(gameObject); }  
  47.     public void OnScroll(PointerEventData eventData) { if (onScroll != null) onScroll(gameObject); }  
  48.     public void OnMove(AxisEventData eventData) { if (onMove != null) onMove(gameObject); }  
  49.   
  50.     static public UUIEventListener Get(GameObject go)  
  51.     {  
  52.         UUIEventListener listener = go.GetComponent();  
  53.         if (listener == null) listener = go.AddComponent();  
  54.         return listener;  
  55.     }  
  56. }  

使用方式:

  1. UUIEventListener.Get(btn.gameObject).onClick = OnClickBtn;     
  2. UUIEventListener.Get(btn.gameObject).parameter = index;     
  3.       
  4. private void OnClickBtn(GameObject go)     
  5. {     
  6.     int index = (int)UUIEventListener.Get(go).parameter;     
  7.     Debug.Log("您单击的索引为:" + index);     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值