UGUI(四)事件系统的封装

来源:互联网 发布:免费刷视频会员软件 编辑:程序博客网 时间:2024/05/01 18:54

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

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

代码如下:

  1. usingUnityEngine;
  2. usingSystem.Collections;
  3. usingUnityEngine.EventSystems;
  4. publicclassUUIEventListener: 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. publicdelegatevoidVoidDelegate(GameObjectgo);
  20. publicVoidDelegateonClick;
  21. publicVoidDelegateonDown;
  22. publicVoidDelegateonEnter;
  23. publicVoidDelegateonExit;
  24. publicVoidDelegateonUp;
  25. publicVoidDelegateonSelect;
  26. publicVoidDelegateonUpdateSelect;
  27. publicVoidDelegateonDeSelect;
  28. publicVoidDelegateonDrag;
  29. publicVoidDelegateonDragEnd;
  30. publicVoidDelegateonDrop;
  31. publicVoidDelegateonScroll;
  32. publicVoidDelegateonMove;
  33. publicobjectparameter;
  34. publicvoidOnPointerClick(PointerEventDataeventData) { if(onClick!= null)onClick(gameObject);}
  35. publicvoidOnPointerDown(PointerEventDataeventData) { if(onDown!= null)onDown(gameObject);}
  36. publicvoidOnPointerEnter(PointerEventDataeventData) { if(onEnter!= null)onEnter(gameObject);}
  37. publicvoidOnPointerExit(PointerEventDataeventData) { if(onExit!= null)onExit(gameObject);}
  38. publicvoidOnPointerUp(PointerEventDataeventData) { if(onUp!= null)onUp(gameObject);}
  39. publicvoidOnSelect(BaseEventDataeventData) { if(onSelect!= null)onSelect(gameObject);}
  40. publicvoidOnUpdateSelected(BaseEventDataeventData) { if(onUpdateSelect!= null)onUpdateSelect(gameObject);}
  41. publicvoidOnDeselect(BaseEventDataeventData) { if(onDeSelect!= null)onDeSelect(gameObject);}
  42. publicvoidOnDrag(PointerEventDataeventData) { if(onDrag!= null)onDrag(gameObject);}
  43. publicvoidOnEndDrag(PointerEventDataeventData) { if(onDragEnd!= null)onDragEnd(gameObject);}
  44. publicvoidOnDrop(PointerEventDataeventData) { if(onDrop!= null)onDrop(gameObject);}
  45. publicvoidOnScroll(PointerEventDataeventData) { if(onScroll!= null)onScroll(gameObject);}
  46. publicvoidOnMove(AxisEventDataeventData) { if(onMove!= null)onMove(gameObject);}
  47. staticpublicUUIEventListenerGet(GameObject go)
  48. {
  49. UUIEventListenerlistener= go.GetComponent();
  50. if(listener== null)listener= go.AddComponent();
  51. returnlistener;
  52. }
  53. }

使用方式:

  1. UUIEventListener.Get(btn.gameObject).onClick=OnClickBtn;
  2. UUIEventListener.Get(btn.gameObject).parameter=index;
  3. privatevoidOnClickBtn(GameObjectgo)
  4. {
  5. intindex= (int)UUIEventListener.Get(go).parameter;
  6. Debug.Log("您单击的索引为:"+index);
  7. }
0 0
原创粉丝点击