How to restart after 2 seconds?,How do i restart the game after 2 seconds?

using UnityEngine;
using UnityEngine.SceneManagement;
public class Game_manager : MonoBehaviour
{
bool gameHasEnded = false;
public float RestartDelay = 2f;
public void EndGame(){

    if(gameHasEnded == false){
        gameHasEnded = true;
        Debug.Log("GAME OVER");
        Invoke("Restart", RestartDelay);
    }

    }
    void Restart(){
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}

It doesn’t restart after 2 seconds…, using UnityEngine;
using UnityEngine.SceneManagement;
public class Game_manager : MonoBehaviour
{
bool gameHasEnded = false;
public float RestartDelay = 2f;
public void EndGame(){

    if(gameHasEnded == false){
        gameHasEnded = true;
        Debug.Log("GAME OVER");
        Invoke("Restart", RestartDelay);
    }

    }
    void Restart(){
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}

After pressing start , it doesn’t restart after 2 seconds.

Have you tried using a coroutine? It would look like this:

public void EndGame()
{
    if (!gameHasEnded)
    {
        gameHasEnded = true;
        StartCoroutine(Restart());
    }
}
IEnumerator Restart()
{
    yield return new WaitForSeconds(RestartDelay);
    SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}

Make sure to include “using System.Collections”

using UnityEngine;
using UnityEngine.SceneManagement;
public class Game_manager : MonoBehaviour
{
bool gameHasEnded = false;
public float RestartDelay = 2f;
public void EndGame(){

 if(gameHasEnded == false){
     gameHasEnded = true;
     Debug.Log("GAME OVER");
     Invoke("Restart", RestartDelay);
 }
 }
 void Restart()
 {
     Wait(RestartDelay);
     SceneManager.LoadScene(SceneManager.GetActiveScene().name);
 }
 IEnumerator  Wait(float sec)
{
          yield return new WaitForSeconds(sec);
}

}