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

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的键盘监听事件。

需要源码的朋友可以给我留言。

转载于:https://blog.51cto.com/14058389/2328058

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101275.html原文链接:https://javaforall.net

(0)
上一篇 2021年6月17日 下午8:00
下一篇 2021年6月17日 下午9:00


相关推荐

  • python入门教程(非常详细)下载_古典吉他入门零基础

    python入门教程(非常详细)下载_古典吉他入门零基础世界上没有绝对的公平,如果我们起点就比别人第一步,那就更需要比别人努力了。每天比别人努力多一点点,就会有很大的突破。你必须特别努力,才能显得毫不费力。期待你成为理想中的自己那一天,加油!

    2022年8月29日
    7
  • 苹果x蓝牙打不开一直转圈圈(苹果7p蓝牙一直转圈打不开)

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。iphonex蓝牙一直转的解决方法是:1、重启手机;2、如果不行备份数据恢复手机的出厂设置;3、仍旧不行,可能是WiFi模块接接触不良,可能是因为进水或者摔过,建议去苹果直营店检修。iPhoneX(英语读音为iPhoneten)是北京时间2017年9月13日凌晨1点在ApplePark新总部史蒂夫・乔布斯剧院2017苹果秋季新品发…

    2022年4月10日
    302
  • 1.3 构建简单的用户界面

    1.3 构建简单的用户界面

    2022年3月4日
    53
  • NAT的双机热备方案

    一般的NAT组网中,内网用户通过单台设备进行NAT转换访问外网,NAT设备承担了所有内外网之间的流量,无法规避单点故障。一旦发生单点故障,将导致内网用户无法与外网通信。随着用户对网络可靠性的要求越来越高,发生单点故障导致网络间断是不可接受的。因此在重要节点处一般都部署两台或者多台设备,构成冗余备份组网,但如果设备之间不能实时的进行数据备份的话,链路切换时还是会导致用户的业务中断。双机热备方案可…

    2022年4月7日
    92
  • 读书笔记-APUE第三版-(8)进程控制

    读书笔记-APUE第三版-(8)进程控制

    2021年11月13日
    34
  • js网页特效

    js网页特效br 我平时特别喜欢研究网页特效 这里是平时 截流 下来的几个 JavaScript 网页特效 在此跟大家一起分享 br 反续排列 br 代码 在需要处加入 br nbsp br bdodir rtl 反续列 br 特点 当你需要把一段话反起来排列时 你怎么办呢 反起来一个一个地输入吗 只要使用以上代码 即可实现 br 自动刷新 br 代码 在网页的和之间加入 br metahttpequi refresh content

    2026年1月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号