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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java代码中BeanUtils工具类的populate方法使用

    Java代码中BeanUtils工具类的populate方法使用这个工具的populate静态方法可以直接将map对象封装成实体类,简化代码编写,这里做一下记录。比如:Map<String,String[]>parameterMap=req.getParameterMap();UserloginUser=newUser();try{//所用的依赖是commons-beanutils-1.8.0.jar//importorg.apache.commons.beanutils.BeanUtils;//作

    2022年7月14日
    16
  • phpstorm 2021.3.5 激活码 3月最新注册码

    phpstorm 2021.3.5 激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    39
  • python取余还是相乘_python取余还是相乘_基于python 取余问题(%)详解

    python取余还是相乘_python取余还是相乘_基于python 取余问题(%)详解取余的公式:余数=除数-被除数*商python的的余数是按照整除(向下取整)得到的商来计算的。取余问题主要分为:正数与正数,负数与负数,正数与负数,0正数与正数#大数/小数:因为得出的商和整除得出的一致,所以直接按照这个公式(余数=除数-被除数*商)即可。print(9//7)#1print(9%7)#2#小数/大数:因为得出的商和整除得出的一致,所以直接按照这个公式(余数=除数-被除数*…

    2022年5月20日
    39
  • WPF日期时间控件

    WPF日期时间控件最近一个WPF项目需要用到日期时间控制,因为WPF自带的控件只有日期没办法选择时间,所以后面用到了一个DateTimePicker控件,支持日期和时间的选择,但使用过程发现有一些小bug,所以进行修正。控制的效果如下:…

    2022年5月13日
    34
  • android 自己定义通知栏遇到的问题「建议收藏」

    android 自己定义通知栏遇到的问题

    2022年1月21日
    39
  • 硬件设计——外围电路(电源电路)[通俗易懂]

    硬件设计——外围电路(电源电路)[通俗易懂]引言 当我们设计一个完整的电路而言,我们除了要知道我们要设计的主芯片电路,如FPGA,DSP,还要知道一些外围电路,如电源电路,复位电路、晶振电路等等。这篇文章我们先来讲解一下对于如何设计一个电源电路。 正文 首先我们查询主芯片的datesheet,根据datesheet,可知主芯片采用多大的电压才能正常工作,然后我们根据其设计电源电路。每个电子设备都有一个供给能量的电源电路。电源电路有整流电源、逆变电源和变频器三种。常见的家用电器中多数要用到直流电源。直流电源的最简单的供电方法是用电池。..

    2022年5月6日
    69

发表回复

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

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