- Home /
When I unpause my game I need to click to hide my cursor again when I pause and unpause my game.
When I pause my first-person game my mouse shows up and then I can move it around but when I unpause my game things work like normal but my mouse won't lock and hide until I click again. Please help :O
public GameObject PauseMenu;
public bool GameIsPaused;
void Start()
{
//Close Menu
GameIsPaused = false;
PauseMenu.SetActive(false);
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (GameIsPaused)
{
ClosePauseMenu();
GameIsPaused = !GameIsPaused;
}
else
{
OpenPauseMenu();
GameIsPaused = !GameIsPaused;
}
}
}
public void OpenPauseMenu()
{
//Open Menu
PauseMenu.SetActive(true);
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
Time.timeScale = 0f;
}
public void ClosePauseMenu()
{
//Close Menu
PauseMenu.SetActive(false);
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
Time.timeScale = 1f;
}
public void ExitGame()
{
Application.Quit();
}
public void ResetLevel()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
Answer by JxWolfe · Apr 09, 2020 at 06:27 PM
Alright, this is a Unity issue, and there isn't anything you can do about it. (Although not much of an issue as much as a feature). Here's what's happing. When you pause your game, Unity releases your mouse, so you can do whatever edits you want. When you head back into play mode, the Game Window isn't actually deemed "active" and instead, Unity believes you still wish to mess around with values, and the inspector is what is "active" while scripts will run, gravity will behave normally, it won't grab your mouse. This is a problem you shouldn't encounter when you build your game, as then your PC software will detect when your game is active, rather than unity deciding if you want to be the in-game mode or inspector. I don't know if this would work, but try clicking on the Game WIndow before running the keyboard shortcut to run the game. (I think that would work)
Sorry I couldn't be more helpful
waaait, when you "pause the game" are you pauseing via unity or via ingame?
When I am moving my character around and hopping I can press ESC and then it brings up some UI and sets Time.timescalce to 0 so nothing happens that I don't want to happen. :)
also, try building your game, just to check that its not unity causeing your mouse ani catch. The code looks sound.
Thank you so much, yes that was the issue. :D
You are just the best honestly :3
Answer by Stekra44 · Jan 27 at 11:13 PM
Hello I got pretty the same problem but my mouse won't dissappear even when i build the game... :D anybody got any ideas? Here's my code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.Characters.FirstPerson;
public class PlayerController : MonoBehaviour
{
public GameObject ESCMenu;
public bool ESCMenuVis;
FirstPersonController firstPersonController;
[SerializeField] GameObject player;
void Start()
{
ESCMenu.SetActive(false);
ESCMenuVis = false;
firstPersonController = player.GetComponent<FirstPersonController>();
}
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown(KeyCode.Escape))
{
if(ESCMenuVis == false)
{
ESCMenu.SetActive(true);
ESCMenuVis = true;
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
Time.timeScale = 0f;
firstPersonController.ESCMenuOpened = true;
}
else
{
ESCMenu.SetActive(false);
Cursor.lockState = CursorLockMode.Locked;
Time.timeScale = 1f;
firstPersonController.ESCMenuOpened = false;
ESCMenuVis = false;
}
}
if (Input.GetKeyDown(KeyCode.R))
{
Debug.Log(Cursor.visible);
}
}
public void SetInActiveMenu()
{
ESCMenuVis = false;
}
public void SetCursorActive()
{
Cursor.lockState = CursorLockMode.None;
}
public void SetTimeNormal()
{
Time.timeScale = 1f;
}
public void EnableRotation()
{
firstPersonController.ESCMenuOpened = false;
}
}