Mouse Cursor Problem

I have created a pause menu in my First Person game and whenever I pause the game the mouse cursor shows up, but the pause button such as “Resume” do not work whenever I click on them. However, when I hit escape to exit out the pause menu, the cursor is still visible. Then I pause the game and the buttons start to work. I have found out that the buttons only work when the cursor is visible “in-game”, but I do not want it to be visible in game. Btw, I am using the “FPS” Asset from the Unity store as my camera.

Pause Menu Script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.Characters.FirstPerson;

public class PauseMenu : MonoBehaviour
{

    public bool Paused = false;
    public GameObject ThePlayer;
    public GameObject Pause;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetButtonDown("Cancel"))
        {
            if (Paused == false)
            {
                Time.timeScale = 0;
                Paused = true;
                Pause.SetActive(true);
                ThePlayer.GetComponent<FirstPersonController>().enabled = false;
                Cursor.visible = true;
            }
            else
            {
                ThePlayer.GetComponent<FirstPersonController>().enabled = true;
                Paused = false;
                Pause.SetActive(false);
                Cursor.visible = false;
                Time.timeScale = 1;
            }
        }
    }

    public void Resume()
    {
        ThePlayer.GetComponent<FirstPersonController>().enabled = true;
        Paused = false;
        Pause.SetActive(false);
        Time.timeScale = 1;
        Cursor.visible = false;
    }
}

What do you need void Resume() for? Is it a built in MonoBehaviour function? Also, I would create a function for pausing and unpausing the game. Make sure that the pause menu script isn’t in any way attached to an object that it’s disabling, as that can cause serious issues. For GameObject, I’m pretty sure it’s .SetActive() not enabled.

Hello.

Im not sure to understand whats the difference between :

"pause button such as “Resume”

“I hit escape to exit out the pause menu”

AS i can understand the command Cursor.visible = false; is only executed when Resume() method is executed.

So, first to prevent this, you can change the cursorvisible in Update

Void Update()
{
if (Paused == false) Cursor visible command
else Cursor not visible command
}

This way, does not care whow you enter/exit pause mode.

The problem with the resume button, i recommend you to make a raycast to debug.log the object name you clicked. So you can see if the problem is in the button execution, or the problem is the button is not beeing pressed. Add this to Update just during developing to have info about what are you clicking

if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out hit))
            {
                if (hit.collider != null)
                {
                    Debug.Log(hit.collider.gameonbject.name);
                }
            }
        }

Try it and post a comment of what you have/find/discover.

Good luck!