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