解決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 即可!

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