unity打包webgl程序和js鍵盤監聽事件沖突的問題。
阿新 • • 發佈:2018-12-09
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鍵盤監聽事件沖突的問題。