1. 程式人生 > >unity打包webgl程序和js鍵盤監聽事件沖突的問題。

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

apt 初始 types oar document 了解 打包 tlist 判斷

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

  //初始化頁面禁用unity的鍵盤監聽事件。
        function hackWebGLKeyboard(str) {
             RemoveEventClick( );
        }
          //給unity鍵盤添加監聽事件
        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鍵盤監聽事件
        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的鍵盤監聽事件給註銷掉,後面在判斷鼠標觸摸的是webgl界面還是js界面,來啟用和禁用webgl的鍵盤監聽事件。

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

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