並且在裏頭寫了一些我希望Button做的事,
其中該具備的各項功能與參數都已經寫好並測試好。
豈知,在不同場景之間互相切換之後,卻碰出一個詭異到不行的問題。
問題是:明明對button做一次的click,可是他卻變成兩次click。
於是只好到處看論壇,找找看是否有人跟我遇到相同問題。
在GitHub論壇[連結],我找到了這篇貼文:InputManager causing UI events to fire twice
這篇貼文與討論,高手如雲。
我最後是用以下這段程式碼解決的。
概念上是這樣的,一旦他偵測到兩個click之間的間隔時間太短,就不執行這個function。
所以第一個click抓到之後,第二個如果時間間隔太近,就離開function。
如此,就如同只發生一個click而已。
private float lastClickTime = 0; private float debounceDelay = 0.005f; public void OnInputClicked(InputClickedEventData eventData) { if(Time.time - lastClickTime < debounceDelay) { return; } lastClickTime = Time.time; // do stuff }
這個解法是被動式的解法,嚴格說並非求甚解而得,
但短期內還得仰仗HoloToolkit的prefab的前提下,這是最快而且可解決問題的作法。
沒有留言:
張貼留言