您好,登錄后才能下訂單哦!
最近用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的鍵盤監聽事件。
需要源碼的朋友可以給我留言。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。