Hold the esc button for a pause menu

Hello,
I wonder how can I when the key is pressed esc, it feels as if the button is held,

I tried with a boolean, but I had trouble placing it, so here I give you my code to open a menu when pressed on the escape key (here, I must continually maintain my button to leave the menu open) .

Thank you in advance,
Gauthier

using UnityEngine;

using System.Collections;



public class Menu : MonoBehaviour 

{

    public GUISkin guiSkin;

    public Texture2D background, LOGO;

    public bool DragWindow = false;

    public string chargerLeNiveau = "";

	public string chargerLeNiveau2 = "";

	public string chargerLeNiveau3 = "";

	public string chargerLeNiveau4 = "";

    public string[] AboutTextLines = new string[0];



	





    private string clicked = "", MessageDisplayOnAbout = "A propos 

";

    private Rect WindowRect = new Rect((Screen.width / 2) - 200, Screen.height / 2, 150, 200);

    private float volume = 1.0f;



    private void Start()

    {

        for (int x = 0; x < AboutTextLines.Length;x++ )

        {

            MessageDisplayOnAbout += AboutTextLines[x] + " 

";

        }

        MessageDisplayOnAbout += "

Appuyer sur Esc pour revenir en arriere";

    }



    private void OnGUI()

    {

        

		

        // si escape est appuyé

		if (Input.GetKey (KeyCode.Escape))

		

		{

			

		

			

			

        if (background != null)

            GUI.DrawTexture(new Rect(0,0,Screen.width , Screen.height),background);

        if (LOGO != null && clicked != "A propos")

            GUI.DrawTexture(new Rect((Screen.width / 2) - 100, 30, 200, 200), LOGO);

		

        GUI.skin = guiSkin;

		

        if (clicked == "")

        {

            WindowRect = GUI.Window(0, WindowRect, menuFunc, "Menu general");

        }

        else if (clicked == "Options")

        {

            WindowRect = GUI.Window(1, WindowRect, optionsFunc, "Options");

        }

        else if (clicked == "A propos")

        {

            GUI.Box(new Rect (0,0,Screen.width,Screen.height), MessageDisplayOnAbout);

        }else if (clicked == "Resolution")

        {

            GUILayout.BeginVertical();

            for (int x = 0; x < Screen.resolutions.Length;x++ )

            {

                if (GUILayout.Button(Screen.resolutions[x].width + "X" + Screen.resolutions[x].height))

                {

                    Screen.SetResolution(Screen.resolutions[x].width,Screen.resolutions[x].height,true);

                }

            }

            GUILayout.EndVertical();

            GUILayout.BeginHorizontal();

            if (GUILayout.Button("Retour"))

            {

                clicked = "Options";

            }

            GUILayout.EndHorizontal();

        }

		}

		

		

    }



    private void optionsFunc(int id)

    {

        if (GUILayout.Button("Resolution"))

        {

            clicked = "Resolution";

        }

        GUILayout.Box("Volume");

        volume = GUILayout.HorizontalSlider(volume ,0.0f,1.0f);

        AudioListener.volume = volume;

        if (GUILayout.Button("Retour"))

        {

            clicked = "";

        }

        if (DragWindow)

            GUI.DragWindow(new Rect (0,0,Screen.width,Screen.height));

    }



    private void menuFunc(int id)

    {

		

		// si escape est appuyé

        if (Input.GetKey (KeyCode.Escape))

		{

		

		

    

        //Boutons 

        if (GUILayout.Button("Lancer le jeu"))

        {

            //Lancer le jeu si cliquer

            Application.LoadLevel(chargerLeNiveau);

        }

		if (GUILayout.Button("Lancer le jeu 2"))

        {

            //Lancer le jeu 2 si cliquer

            Application.LoadLevel(chargerLeNiveau2);

        }

		if (GUILayout.Button("Lancer le jeu 3"))

        {

            //Lancer le jeu 3 si cliquer

            Application.LoadLevel(chargerLeNiveau3);

        }

		if (GUILayout.Button("Lancer le jeu 4"))

        {

            //Lancer le jeu 4 si cliquer

            Application.LoadLevel(chargerLeNiveau4);

        }

        if (GUILayout.Button("Options"))

        {

            clicked = "Options";

        }

        if (GUILayout.Button("A propos"))

        {

            clicked = "A propos";

        }

        if (GUILayout.Button("Quitter"))

        {

            Application.Quit();

        }

        if (DragWindow)

            GUI.DragWindow(new Rect(0, 0, Screen.width, Screen.height));

    }

		

	}



    private void Update()

    {

        if (clicked == "A propos" && Input.GetKey (KeyCode.Escape))

            clicked = "";

    }

}

You are using Input.GetKey() for the check. That will constantly fire as long as the button is held down. What you want to use instead is a combination of Input.GetKeyDown() and a bool to check weather the menu is open

bool isMenuOpen = false;

void Update()
{
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        if(!isMenuOpen)
        {
             // open menu
             isMenuOpen = true;
        }
        else
        {
             // close menu
             isMenuOpen = false;
        }
    }
}

Unlike Input.GetKey() which returns true as long as the button is pressed, GetKeyDown() will return true only exactly once, in the frame the key has been pressed