0
我想在我的统一WebGL游戏中添加一个事件监听器来更改Cursor.lockState。如何为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已解锁并立即重新暂停游戏。
为了解决这个问题,我想我需要创建一个事件来监听锁状态的变化并调用该方法。而不是每帧调用的方法。
嗨,谢谢你的回应。我需要直接监视Cursor.lockState。原因是Cursor.lockState正在被浏览器/ Unity webGL修改,我不能依靠它来使用你建议的'SetCursor'属性。我需要知道是否有方法可以将事件/委托添加到Cursor.lockstate。 – Jim
“我不能依靠它来使用你建议的'SetCursor'属性。”我不明白你的评论。问题是关于lockState。我添加了可见和SetCursor作为奖励。这三个功能应该引发一个事件。你对这个解决方案有什么问题? – Programmer