今天碰见一个问题: 在无任何相关操作的情况下, <UIEventListener>().onClick 会主动触发,导致程序 逻辑错误。
经过探查,原因在于:
UICamera.currentTouchID 没有清除干净,
- OnPress(isDown) 当鼠标按键在一个碰撞器上按下时触发
- OnClick() 和OnSelect的触发条件一样,还能通过额外检查鼠标是否还没移开。UICamera.currentTouchID告诉你按下了哪个按钮。
只要 改用 OnCLick -> OnPress 即可解决。
====================
20:55 后续,
奶奶个腿儿!
原来是 在 NGUI 的框架下, 按下 Enter (KeyCode.Return)按键 的情况, 默认为:等价于在鼠标上一次点击的屏幕位置position,实现一次 点击操作!
====================
21:22 后续
打开 UICamera.cs
将 原框架 定义的
public KeyCode submitKey0 = KeyCode.Return;
修改 为:
public KeyCode submitKey0 = KeyCode.None;
即可,此时,再 按下 Enter 键, 就不会触发 Submit 操作,没有异常了
yep~~
注:在代码中设置后,最好再到 Hierachcy 中去 将 UI Root/Camera /UICamera 下的 Submit 设置为 KeyCode.None 即可!