Не становится SetActive(false);

Такая проблема создал кнопку которая включается когда переменная равняется 0
когда на неё нажимаешь то она выключается, перезагружает сцену и Time.timeScale = 1f;
Но она почему то выполняет только релоуд сцены. А сама не исчезает и Time.timeScale не меняет.

Код:

    void Start()
    {
        restart.SetActive(false);
        Time.timeScale = 1;
    }

 void Update()
    {
        if (MistakeText.mistake <= 0)
        {
            restart.SetActive(true);
            Time.timeScale = 0;
        }
    }

    public void Restart()
    {
        SceneManager.LoadScene(1);
    }

Не знаю Unity, так что могу только наводящие вопросы задавать :slight_smile:
В Unity можно для одной кнопки назначать несколько обработчиков нажатия?

Если речь о том, что Start не вызывается снова после перезагрузки сцены, то видимо было сделано что-то, чтобы этот объект не пересоздавался. Синглтон, static, DontDestroyOnLoad и т.п.

но в прошлом проекте этот код работал. Я сделал чтоб теперь и уничтожался объект

        if (MistakeText.mistake <= 0)
        {
            restart.SetActive(true);
            Time.timeScale = 0;
            Destroy(gameObject);
        }

Но теперь при рестарте он не появляется и проблема также не пропала

Может что то именно с объектом Player не так?

Так а как объект создается, в котором этот скрипт?

Он пересоздаётся при перезапуске сцены

По крайней мере в прошлых прокатах так было

Так а что за объект-то, он просто на сцене лежит или как-то программно создается?

Просто лежит на сцене

Ну видимо что-то все-таки изменилось :man_shrugging:

Можно для начала например DontDestroyOnLoad поискать по файлам проекта/папки. (Ctrl+Shift+F).

Еще удалить кэши и пересобрать проект/ассеты, в юнити в меню сверху есть какая-то кнопка про это.

Если раньше работало в этом проекте, то вспоминать что поменялось. Если бы использовалась система контроля версий (Git, …), то вспоминать была бы проще. :slight_smile:

Почистил кэш и пересобрал проект, DontDestroyOnLoad нигде нет, но проблема так-же осталась

Кстати при перезапуске не сбрасываются счётчики. У меня есть счётчик попаданий и при перезапуске сцены он не сбрасывается до 0, а счётчик промахов который если достигает 0 то появляется кнопка рестарт не меняется на свой прежний показатель в 5

В общем void Start() вызывается при перезапуске, я проверил через Debug.Log()

Но почему-то не изменяется Time.timeScale и не происходит restart.SetActive(false);

Может оно просто изменяется обратно потом?

Например если снова срабатывает это