Не работает скрипт в юнити

следовал одному тутору из ютуба и написал вот это:

public void OnFadeComplete()
{
    SceneManager.LoadScene(sceneToLoad);
    StartCoroutine(Loading());
}

IEnumerator Loading()
{
    AsyncOperation operation = SceneManager.LoadSceneAsync(sceneToLoad);
    loadingCanvas.SetActive(true);

    while (!operation.isDone)
    {
        float progress = Mathf.Clamp01(operation.progress);
        slider1.value = progress;
        slider2.value = progress;
        slider3.value = progress;
        loadingText.text = progress.ToString() + "%";
        yield return null;
    }
}

Почему-то канвас не включается вообще, хотя в переменных все указано верно, буквально минут пять назад все работало, а потом что-то поламалось.


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

Автор решения: anonymus
  1. Проверьте, вызывается ли метод OnFadeComplete() в вашем коде. Может случиться так, что этот метод больше не вызывается по какой-то причине.
  2. Указан ли правильный сценарий для загрузки в переменной sceneToLoad? Если указана неверная сцена, то метод LoadSceneAsync не будет работать корректно.
  3. Убедитесь, что вы выставили переменную loadingCanvas в редакторе Unity и что объект, на который она указывает, не выключен.
  4. Проверьте, указаны ли в редакторе Unity все ссылки на slider1, slider2, slider3 и loadingText.
  5. Обратите внимание на очерёдность выполнения методов. Вы вызываете метод LoadScene(sceneToLoad) перед стартом Loading(). Это немедленно загрузит новую сцену и выключит текущую, включая все объекты на ней, до того как Loading() начнёт выполнение. Вам нужно либо убрать вызов SceneManager.LoadScene(sceneToLoad); из OnFadeComplete(), либо вызвать StartCoroutine(Loading()); перед ним.
  6. Проверьте логи Unity на наличие ошибок. Возможно, при изменении кода или сцены возникла новая ошибка, которая прерывает выполнение скрипта.
  7. Если у вас есть система, которая отвечает за переключение сцен и fade анимацию, убедитесь, что она корректно работает и не выключает канвас в процессе выполнения.
  8. Убедитесь, что Loading() действительно запускается. Вы можете добавить в неё Debug.Log, чтобы удостовериться.
→ Ссылка