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