Как сделать повторную асинхронную загрузку сцены?

Рейтинг: 2Ответов: 0Опубликовано: 09.05.2023

У меня есть сцена StartScene с кнопкой "Новая игра". По нажатию на неё запускается "промежуточная" сцена загрузки LoadingScene. LoadingScene, используя корутину, выводит прогресс загрузки и загружает сцену Scene1.

Вот код LoadingScene

AsyncOperation asyncOperation;
public Image loadingBarFill;
public Text loadingText;
private string sceneName="Scene1";

void Start()
{
    StartCoroutine(LoadSceneCoroutine());
}



IEnumerator LoadSceneCoroutine()
{
    yield return new WaitForSeconds(1f);
    asyncOperation = SceneManager.LoadSceneAsync(sceneName);
    while(!asyncOperation.isDone)
    {           
        float progress = asyncOperation.progress/0.9f;
        loadingBarFill.fillAmount = progress;
        loadingText.text = "Загрузка"+string.Format("{0:0}%", progress*100f);
        yield return 0;
        
    }
    
}

Типовая загрузка уровня через промежуточную сцену.

В первый раз всё работает. StartScene -> LoadingScene -> Scene1. Всё хорошо - Scene1 загружена.

Далее на Scene1 я нажимаю на кнопку - "Вернуться в главное меню игры" и перехожу к сцене StartScene.

SceneManager.LoadScene("StartScene ");

И снова повторяю действия. Нажимаю кнопку "Новая игра" - перехожу на сцену LoadingScene и ничего не происходит. Прогрессбар стоит на нуле, сцена Scene1 не загружается.

Без асинхронной загрузки, простыми SceneManager.LoadScene всё загружается.

Я знаю, что при асинхронной загрузке, надо выгружать сцену. Пробовал разные варианты выгрузки - не помогало.

Как сделать повторную асинхронную загрузку сцены?

Ответы

Ответов пока нет.