Я хотел бы добавить прослушиватель событий для изменений в Cursor.lockState в моей единственной игре 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 разблокирован и мгновенно переустанавливает игру.
Чтобы исправить это, я думаю, мне нужно создать событие, которое прослушивает изменения в состоянии блокировки и вызывает метод. Вместо метода, называемого каждым кадром.
привет, спасибо за ваш ответ. Мне нужно напрямую контролировать Cursor.lockState. Причина в том, что Cursor.lockState модифицируется браузером/Unity webGL, я не могу полагаться на него, чтобы использовать ваше предлагаемое свойство SetCursor. Мне нужно было знать, есть ли способ добавить событие/делегат в Cursor.lockstate. – Jim
«Я не могу полагаться на это, чтобы использовать предлагаемое свойство« SetCursor ». Я не понимаю ваш комментарий. Вопрос о lockState. Я добавил видимый и SetCursor в качестве бонуса. Три функции должны инициировать событие. Какая у вас проблема с этим решением? – Programmer