最近用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的键盘监听事件。
需要源码的朋友可以给我留言。
转载于:https://blog.51cto.com/14058389/2328058
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101275.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...