I'm trying to toggle my in-game menu.

I created an in-game menu. That menu can be toggled with UI buttons.

Now I want to make it possible to press the button ‘esc’ to open the menu and press it again to close it.

The problem is, that it wants to open the menu, but not close it.

The solution might be simple, but I can’t seem to solve it.

Maybe I’m just thinking too complicated…

Here is my code/script:

public bool paused = false; 

void Update()
{

    if (!paused && Input.GetKey(KeyCode.Escape))
    {
        Debug.Log("You have paused the game.");
        paused = true;
        PauseGame();
    }
    else if (paused && Input.GetKeyUp(KeyCode.Escape))
    {
        Debug.Log("You have continued the game");
        paused = !paused;
        ResumeGame();
    }

}

public void PauseGame()
{
    buttonSound.Play();
    Time.timeScale = 0f;
    thePauseMenu.SetActive(true);
    thePauseButton.SetActive(false);
}

public void ResumeGame()
{
    buttonSound.Play();
    Time.timeScale = 1f;
    thePauseMenu.SetActive(false);
    thePauseButton.SetActive(true);
}

Youre going to want to start off by making sure that this button and the everything youre trying to activate and deactivate is attached to the same canvas. Call this canvas “PauseMenu” Next create a script and call it PauseController :

using UnityEngine;
using System.Collections;


public class PauseGame : MonoBehaviour {
    public Transform canvas;
 



	
	// Update is called once per frame
	void Update () {
	    if (Input.GetKeyDown(KeyCode.Escape))
        {
            Pause();
        }
	}
    public void Pause()
    {
        if (canvas.gameObject.activeInHierarchy == false)
        {
            canvas.gameObject.SetActive(true);
            Time.timeScale = 0;
        }
        else
        {
            canvas.gameObject.SetActive(false);
            Time.timeScale = 1;       
        }
    }
}

Now create an empty game object and call that too PauseController. Add the script to it. Now go to the game object and select the pause canvas.