溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

unity打包webgl程序和js鍵盤監(jiān)聽事件沖突的問題。

發(fā)布時間:2020-06-16 17:37:57 來源:網(wǎng)絡 閱讀:1827 作者:GuangYao_Li 欄目:游戲開發(fā)

最近用unity發(fā)布webgl程序時,出現(xiàn)了一個挺蛋疼的問題就是,webgl里面的程序他會接受js的鍵盤監(jiān)聽事件,這樣就導致了webgl程序可以使用出入框,讓后js程序的輸入框就無效了,為了解決這個問題,我也找了一些資料,不過看了以后感覺大部分不能用,后來通過自己研究總結(jié)得出了下面的代碼,親測可用,廢話不多說,直接上代碼。

  //初始化頁面禁用unity的鍵盤監(jiān)聽事件。
        function hackWebGLKeyboard(str) {
             RemoveEventClick( );
        }
          //給unity鍵盤添加監(jiān)聽事件
        function AddEventClick(){
             for (var i in JSEvents.eventHandlers) {
                var event = JSEvents.eventHandlers[i];
                if (event.eventTypeString == 'keydown' || event.eventTypeString == 'keypress' || event.eventTypeString == 'keyup') {
                   window.addEventListener(event.eventTypeString, event.eventListenerFunc, event.useCapture);
                }
            }
        }
        //移除unity鍵盤監(jiān)聽事件
        function RemoveEventClick( ){
             for (var i in JSEvents.eventHandlers) {
                var event = JSEvents.eventHandlers[i];
                if (event.eventTypeString == 'keydown' || event.eventTypeString == 'keypress' || event.eventTypeString == 'keyup') {
                  window.removeEventListener(event.eventTypeString, event.eventListenerFunc, event.useCapture);
                }
            }
        }
        //判斷當前是否點擊到了unity的畫布
     document.addEventListener('click', function(e) {
        if (e.target.id == "canvas") {
            AddEventClick();
        } else {
            RemoveEventClick();
        }

這段代碼的原理就是在webgl程序開始啟動的時候先把webgl的鍵盤監(jiān)聽事件給注銷掉,后面在判斷鼠標觸摸的是webgl界面還是js界面,來啟用和禁用webgl的鍵盤監(jiān)聽事件。

需要源碼的朋友可以給我留言。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI