WebGLInput.captureAllKeyboardInput 奇怪的行为。可以启用,但不能禁用

Jac*_*ack 1 javascript sendmessage unity-game-engine unity-webgl

我遇到了 WebGLInput 的非常奇怪的行为。我有一个使用 WebGL Unity 构建的网站。默认情况下,WebGL 会捕获所有键盘输入。但是,我必须在 html 中使用输入字段。

所以首先我禁用 WebGLInput 并且它可以工作:

private void Start()
{
#if !UNITY_EDITOR && UNITY_WEBGL 
     WebGLInput.captureAllKeyboardInput = false;
#endif
}
Run Code Online (Sandbox Code Playgroud)

然后使用下面的函数向 unity 发送一条消息来切换键盘输入。它首先会启用它,但不会禁用它!

document.addEventListener('click', function(e) {
    if (e.target.id == "#canvas") {
        this.FocusCanvas("1");
    } else {
        this.FocusCanvas("0");
    }
}.bind(this), false);
Run Code Online (Sandbox Code Playgroud)

这是我用来切换 WebGLInput 的统一代码:

public void FocusCanvas(string focus)
{
    #if !UNITY_EDITOR && UNITY_WEBGL
        if (focus == "0") {
            WebGLInput.captureAllKeyboardInput = false;
        } else {
            WebGLInput.captureAllKeyboardInput = true;
        }
    #endif
}
Run Code Online (Sandbox Code Playgroud)

我尽可能地调试了它,并且我非常确定该方法已被触发并且所有内容都已执行。但禁用 captureAllKeyboardInput 不起作用。有人遇到过这样的问题吗?如果是这样,请告诉我我做错了什么?

Jac*_*ack 7

我找到了一个顺利的解决方案。无需切换它。我刚刚禁用它并将 tabindex="1" 添加到画布。现在,当聚焦时,键盘可以在输入字段和画布上工作。