3

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

我想确保我专注于游戏,当焦点丢失/按下退出键时,我想显示一个带有文本“单击此处继续”的暂停屏幕。

这是我的暂停课

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);
}

}

问题是

  • 当用户将焦点(例如选项卡)切换到其他内容时,游戏不会暂停

  • 当用户按下退出时,游戏不会显示暂停菜单。好像没有注册退出键。他们能够在浏览器中再次看到他们的光标(这使得第一人称控制令人困惑)。

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

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

0 回答 0