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就不会传入参数 我们需要在函数中去判断处理逻辑