UG2L14——Eventlistener和Eventtrigger
Eventlistener和Eventtrigger
他们帮助我们封装了所有 NGUI特殊响应函数
可以通过它对各种对象进行管理添加 NGUI特殊响应函数
本章代码关键字
1 2 3 4 5 6 7 8 9 10 11 12
   | UIEventlistener               UIEventListener.Get()         Eventtrigger                  OnHover(bool isOver)          OnPress(bool pressed)         OnClick()                     OnDoubleClick()               OnDragStart()                 OnDrag(Vector2 delta)         OnDragEnd()                   OnDragOver(GameObject go)     OnDragOut(GameObject go)     
   | 
 
控件自带事件的局限性
目前复合控件只提供了一些常用的事件监听方式
比如:Button——点击、Toggle—值变化等等
如果想要制作 按下、抬起、长按 等功能利用现在的知识是无法完成的
NGUI事件响应函数
添加了碰撞器的对象
NGUI提供了一些利用反射调用的函数
1 2 3 4 5 6 7 8 9 10
   | OnHover(bool isOver)          OnPress(bool pressed)         OnClick()                     OnDoubleClick()               OnDragStart()                 OnDrag(Vector2 delta)         OnDragEnd()                   OnDragOver(GameObject go)     OnDragOut(GameObject go)     
 
   | 
 
按下
1 2 3 4 5 6 7
   | void OnPress(bool pressed) {     if (pressed)         print("按下");     else         print("抬起"); }
   | 
 
经过
1 2 3 4 5 6 7
   | void OnHover(bool isOver) {     if (isOver)         print("正在经过");     else         print("离开"); }
   | 
 
点击
1 2 3 4
   | void OnClick() {     print("点击相关"); }
   | 
 
双击
1 2 3 4
   | void OnDoubleClick() {     print("双击相关"); }
   | 
 
拖曳开始
1 2 3 4
   | void OnDragStart() {     print("拖曳开始"); }
   | 
 
拖曳中
delta是Vector2变量,代表的是相对于上一次移动的位置
1 2 3 4
   | void OnDrag(Vector2 delta) {     print("拖曳中" + delta); }
   | 
 
拖曳结束
1 2 3 4
   | void OnDragEnd() {     print("拖曳结束"); }
   | 
 
某对象拖曳经过另一个对象
注意,传入的obj代表的是当前拖的对象
1 2 3 4
   | void OnDragOver(GameObject obj)      {     print("拖曳经过" + obj.name); }
   | 
 
某对象拖曳离开另一个对象
注意,传入的obj代表的是当前拖的对象
1 2 3 4
   | void OnDragOut(GameObject obj)       {     print("拖曳离开" + obj.name); }
   | 
 
UIEventListener
适合代码添加,能添加的函数参照上方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | public UISprite A; public UISprite B;
  void Start() {    UIEventListener listener = UIEventListener.Get(A.gameObject);    listener.onPress += (obj, isPress) => {        print(obj.name + "被按下或者抬起了" + isPress);    };    listener.onDragStart += BeginDrag; }
  private void BeginDrag(GameObject obj) {     print(obj.name + "开始拖曳"); }
   | 
 
UIEventTrigger
适合Inspector面板 关联脚本添加 能添加的函数参照上方
操作类似于之前的各种复合控件提供拖曳关联监听函数
Eventlistener和Eventtrigger区别
- Listener更适合 代码添加监听 Trigger适合拖曳对象添加监听
 
- Listener传入的参数 更具体  Trigger就不会传入参数 我们需要在函数中去判断处理逻辑