Time.timeScale = 0; problems with buttons

Goodday dear reader,

I have a question, i am very new to C# and i am learning it at the moment. This question has been asked more often, but most probaly its because of my expierence of coding that i cannot solve it myself.

I have created a ‘pause menu’ for ingame, But the problem is when i pause, everything works correct, everything freezes like it should, but even all the functions froze, when going out of the menu the function is enabled. How do i make the function be enabled in freezing mode.

Beside that i also a second question, i made up a small delay to here a clicking sound when pushing the buttons, it feels for me that i used a pretty ‘dirty’ code for this and is there any option for a smaller and more compact code (i assume there must be) I dont ask to write me a code, but an advice what to use instead.

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

public class PauseGame : MonoBehaviour {

    public Transform canvas;
    public Transform Player;

    public void ExitGame()
    {
        StartCoroutine("Wait");
    }

    IEnumerator Wait()
    {
        yield return new WaitForSeconds(0.200F);
        Application.Quit();
    }

    public void Sceneload()
    {
        StartCoroutine("Wait1");
    }

    IEnumerator Wait1()
    {
        yield return new WaitForSeconds(0.200F);
        SceneManager.LoadScene(1w);
    }

    void Update ()
    {
	    if (Input.GetKeyDown(KeyCode.Escape))
        {
            Pause();
        }
	}

    public void Pause()
    {
        if (canvas.gameObject.activeInHierarchy == false)
        {
            canvas.gameObject.SetActive(true);
            Time.timeScale = 0;
            Player.GetComponent<FirstPersonController>().enabled = false;
        }
        else
        {
            canvas.gameObject.SetActive(false);
            Time.timeScale = 1;
            Player.GetComponent<FirstPersonController>().enabled = true;
        }
    }
}

Thank you very much in advance for your reply :)!!!

Kind regards,

Alfred

WaitforSeconds will take forever when your Time.timeScale is 0. So your function never progresses to the LoadScene function. You need to decouple this from the game-time.

Here’s a previous answer that has all the info you need: