Скрипт работает без ошибки, но в игре ничего не происходит

Записал вопрос на видео. Суть такова. В игре кнопка RESTART (к которой привязана функция GameRestart) делает тоже самое что и кнопка MENU (к которой привязана функция GameMenu), хотя должна еще и отрабатывать функцию GameStart (которая, в свою очередь, привязана к кнопке START и которая успешно работает). В функции GameStart присутствует Debug.Log и он отрабатывает по обеим кнопкам (START и RESTART). Никаких ошибок в Unity не выскакивает. Теперь я знаю, что нужно делать отдельные сцены под меню и игру/игровые уровни, но пока, хочется понять, почему кнопка RESTART не отрабатывает как надо. Сам скрипт:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class GameController : MonoBehaviour
{

    public static GameController instance;

    public GameObject menuPanel;
    public GameObject gamePausePanel;
    public Button resumeButton;
    public Text scoreLabel;
    public Text liveLabel;
    public Text gameOverLabel;
    public Text recordLabel;
    AudioSource goMusic;

    int score = 0;
    int live = 3;
    public int recordScore;
    public bool isStarted = false;
    public bool isPaused = false;
        
    void Start()
    {
        instance = this;
        menuPanel.SetActive(true);        
        goMusic = GetComponent<AudioSource>();
        goMusic.Play();
        goMusic.Pause();

    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape) && isStarted && live > 0)
        {
            if (isPaused == false)
            {
                GamePause();
            }
            else
            {
                GameResume();
            }
        }

        if (live < 1)
        {
            Destroy(GameObject.FindGameObjectWithTag("Player"));
            gamePausePanel.SetActive(true);
            gameOverLabel.gameObject.SetActive(true);
            resumeButton.gameObject.SetActive(false);
            goMusic.UnPause();
            Time.timeScale = 0.5f;
        }

        recordLabel.text = ("RECORD: " + PlayerPrefs.GetInt("HightScore"));
        recordScore = score;
        if(PlayerPrefs.GetInt("HightScore") <= recordScore)
        {
            PlayerPrefs.SetInt("HightScore", recordScore);
        }

    }

    public void GameStart()
    {
        menuPanel.SetActive(false);
        isStarted = true;
        Time.timeScale = 1f;
        Debug.Log("GameStart otrabotal");
    }

    public void GamePause()
    {
        gamePausePanel.SetActive(true);
        resumeButton.gameObject.SetActive(true);
        gameOverLabel.gameObject.SetActive(false);
        isPaused = true;
        Time.timeScale = 0f;
    }

    public void GameResume()
    {
        gamePausePanel.SetActive(false);
        isPaused = false;
        Time.timeScale = 1f;
    }

    public void GameRestart()
    {
        GameMenu();
        GameStart();
        //SceneManager.LoadScene("Space_Fighter");
        //menuPanel.SetActive(false);
        //isStarted = true;
        //Time.timeScale = 1f;
    }

    public void GameMenu()
    {
        SceneManager.LoadScene("Space_Fighter");
    }

    public void GameQuit()
    {
        Application.Quit();
    }

    public void IncrementLive(int increment)
    {
        live += increment;
        liveLabel.text = live + " :LIVE";
    }

    public void IncrementScore(int increment)
    {
        score += increment;
        scoreLabel.text = "SCORE: " + score;
    }   
    
}


Ответы (1 шт):

Автор решения: Yevgen Tereshuk
public void GameRestart()
{
    GameMenu(); // Загружается новая сцена, GameStart уже не сработает
    GameStart();
}
→ Ссылка