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


相关推荐

  • Jquery delegate的理解

    Jquery delegate的理解step4TagList albumShow divStep4 delegate abmFct icoRt click function alert ok 与 step4TagList albumShow abmFct divStep4 delegate

    2026年3月26日
    2
  • linux查看防火墙有没关闭了,linux查看防火墙是否关闭的实例方法

    linux查看防火墙有没关闭了,linux查看防火墙是否关闭的实例方法linux 查看防火墙是否关闭的实例方法一 service 方式查看防火墙状态 root centos6 serviceiptab 未运行防火墙 推荐教程 linux 教程二 iptables 方式先进入 init d 目录 命令如下 root centos6 cd etc init d root centos6init d 然后查看防火墙状态

    2025年7月16日
    6
  • Pulsar整理

    Pulsar整理Pulsar 整理一 Pulsar 简述 1 1 定义 ApachePulsar 是一个分布式 高性能的服务器到服务器的消息解决方案 ApachePulsar 是最初在 Yahoo 创建的开源分布式 pub sub 消息传递系统 现已成为 ApacheSoftwa 的一部分 1 2Pulsar 基础架构概述 Plusar 包含以下几种组件 如下图 架构之间的协作 如下图 1

    2026年3月19日
    2
  • 模板继承与导入

    模板继承的场景一:模版继承1)继承使用步骤1:母板里写入block,就可以被继承,content是名称步骤2:子页面通过extends指定继承那个模板2)如果子页面有自己的css,js怎么

    2022年3月29日
    56
  • Windows10 环境变量_环境变量与用户变量

    Windows10 环境变量_环境变量与用户变量Windows10环境变量(用户变量与系统变量)1.环境变量(environmentvariables)环境变量(environmentvariables)是在操作系统中用来指定操作系统运行环境的一些参数。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用

    2026年1月15日
    3
  • 机器翻译评价指标BLEU介绍

    机器翻译评价指标BLEU介绍最近需要设计一个机器翻译相关的试验 其中好多东西都不同 先从基础的评价指标来吧 本文翻译自 JasonBrownle 的博客 1 可能会简化一部分内容 如有需要请读者直接读原文 0 前言 BLEU 其全称为 BilingualEva 其意思是双语评估替补 所谓 Understudy 替补 意思是代替人进行翻译结果的评估 尽管这项指标

    2026年3月20日
    2

发表回复

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

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