解决Bug: NGUI transform.GetComponent<UIEventListener>().onClick 在 无操作情况下,自主触发

今天碰见一个问题: 在无任何相关操作的情况下, <UIEventListener>().onClick 会主动触发,导致程序 逻辑错误。

经过探查,原因在于:UICamera.currentTouchID 没有清除干净,

UICamera发送下面的事件给碰撞器:
  • 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 即可!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章