我想为我的统一 WebGL 游戏中的 Cursor.lockState 更改添加一个事件侦听器。
如果光标被锁定,我想取消暂停游戏。如果我检测到光标已解锁,我想暂停一下。
这是我到目前为止所拥有的
using UnityEngine;
using System.Collections;
public class Pause : MonoBehaviour {
public RotateCamera rotateCamera;
public GameObject pauseMenu;
private bool paused;
void Update()
{
if (paused)
{
if (Input.GetMouseButtonDown(0))
{
UnpauseGame();
return;
}
}
if (Cursor.lockState == CursorLockMode.Locked)
{
Debug.Log("CursorLockMode = Locked");
UnpauseGame();
return;
}
if (Cursor.lockState == CursorLockMode.Confined)
{
Debug.Log("CursorLockMode = Confined");
UnpauseGame();
return;
}
if (Cursor.lockState == CursorLockMode.None && paused == false)
{
Debug.Log("CursorLockMode = None");
PauseGame();
}
}
public void PauseGame()
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
paused = true;
pauseMenu.SetActive(true);
}
public void UnpauseGame()
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
paused = false;
pauseMenu.SetActive(false);
}
}
问题是
- 当试图用鼠标按钮取消暂停游戏时,游戏会立即暂停。我相信脚本检测到 cursor.lockstate 已解锁并立即重新暂停游戏。
为了解决这个问题,我想我需要创建一个事件来监听锁定状态的变化并调用该方法。而不是每一帧都调用该方法。