unity打包webgl程序和js键盘监听事件冲突的问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity打包webgl程序和js键盘监听事件冲突的问题。相关的知识,希望对你有一定的参考价值。

最近用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键盘监听事件冲突的问题。的主要内容,如果未能解决你的问题,请参考以下文章

unity打包webgl局限及优化建议

unity打包webgl局限及优化建议

unity打包webgl局限及优化建议

Mac 鼠标/键盘事件的监听和模拟

unity打包webgl 部署到本地Web服务器

unitywebgl允许http没有响应