C# 如何检查我的Unity WebGL应用程序是否有焦点?

C# 如何检查我的Unity WebGL应用程序是否有焦点?,c#,html,unity3d,unity-webgl,C#,Html,Unity3d,Unity Webgl,我在webGL游戏中使用鼠标锁定作为第一人称相机旋转的一部分 我想确保我的注意力集中在游戏上,当焦点丢失/按escape键时,我想显示一个带有文本“单击此处继续”的暂停屏幕 这是我的暂停课 using UnityEngine; using System.Collections; public class Pause : MonoBehaviour { public RotateCamera rotateCamera; public GameObject pauseMenu; public

我在webGL游戏中使用鼠标锁定作为第一人称相机旋转的一部分

我想确保我的注意力集中在游戏上,当焦点丢失/按escape键时,我想显示一个带有文本“单击此处继续”的暂停屏幕

这是我的暂停课

using UnityEngine;
using System.Collections;

public class Pause : MonoBehaviour {


public RotateCamera rotateCamera;
public GameObject pauseMenu;
public bool paused;

public void Start()
{
    PauseGame();
}


void OnApplicationFocus(bool hasFocus)
{
    if (hasFocus == true)
    {
        UnPause();
    }
    if (hasFocus == false)
    {
        PauseGame();
    }
}

void Update () {

    if (Input.GetKeyDown(KeyCode.Escape))
    {
        PauseGame();
    }

    if (paused)
    {
        if (Input.GetMouseButtonDown(0))
        {
            UnPause();
        }
    }
}

public void PauseGame()
{
    rotateCamera.LockCursor(false);
    paused = true;
    pauseMenu.SetActive(true);
}

public void UnPause()
{
    rotateCamera.LockCursor(true);
    paused = false;
    pauseMenu.SetActive(false);
}
}

问题是

  • 当用户切换焦点时,例如将标签切换到游戏中的其他内容 不停

  • 当用户按下escape时,游戏不会显示暂停菜单。它好像没有注册退出键。他们可以在浏览器中再次看到光标(这会使第一人称控件混淆)

如果这有任何帮助的话,这就是我在rotateCamera脚本中处理鼠标锁定的方式

public void LockCursor(bool _lock)
{
    lockCursor = _lock;
    Screen.lockCursor = lockCursor;
}

检查它的唯一方法是为您的登录页编写一个小js脚本,检查游戏的iframe是否具有焦点。你可以用谷歌统一浏览器来做更具体的事情吗?