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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity打包WebGL应用程序时,可以通过JavaScript与网页中的DOM元素进行交互,从而实现手机在WebGL应用程序中拉起键盘的功能。 首先,在Unity中创建一个JavaScript文件。在该文件中,可以使用document.getElementById()函数获取到对应的DOM元素,并通过调用该元素的focus()函数来拉起键盘。例如,如果想要在用户点击一个按钮时拉起键盘,可以在JavaScript文件中编写以下代码: ```javascript function LaunchKeyboard() { var inputField = document.getElementById("inputField"); inputField.focus(); } ``` 然后,在Unity中创建一个UI按钮,并将其与上述的JavaScript函数关联起来。可以通过在按钮的OnClick事件处理程序中调用JavaScript方法来实现。在Unity的UI系统中,可以在Button组件的OnClick事件列表中添加一个新的事件,并将其设为调用JavaScript函数。例如,可以将上述的LaunchKeyboard()函数与按钮的OnClick事件关联起来。 最后,将Unity项目打包WebGL。在打包的过程中,要确保已将上述的JavaScript文件包含在生成的HTML文件中。这可以通过在Unity中的Build Settings中,点击Player Settings按钮,在Inspector窗口中的WebGL Template字段中选择Default,并勾选Custom Template选项来实现。 通过上述步骤,当在Unity应用程序中点击与JavaScript函数关联的按钮时,就会调用JavaScript代码,使WebGL应用程序拉起手机键盘。注意,为了实现该功能,需要确保设备支持WebGL,并且在WebGL应用程序中正确设置了DOM元素的ID。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值