Начало перехода
На активном управляющем объекте заведите флаг loading. Обработчик кнопки сначала проверяет его: если загрузка уже идёт, возвращается. При первом запуске поставьте флаг, покажите вашу панель и вызовите StartCoroutine для метода загрузки. Ссылки на Slider и панель должны быть назначены заранее.
Ожидание операции
Для вашей сцены основа корутины может выглядеть так:
IEnumerator LoadRoom()
{
yield return null;
var operation = SceneManager.LoadSceneAsync("RoomB");
while (!operation.isDone)
{
slider.value = Mathf.Clamp01(operation.progress / 0.9f);
yield return null;
}
}
Нужны пространства имён System.Collections и UnityEngine.SceneManagement. Переменная slider в примере обозначает уже назначенный компонент UnityEngine.UI.Slider. Первый yield даёт интерфейсу возможность показать панель перед началом загрузки. Последующие yield позволяют обновлять отображение между проверками операции.
Активация
Здесь allowSceneActivation остаётся включённым, поэтому после подготовки Unity перейдёт в новую сцену. Если выключить этот флаг и забыть вернуть true, операция может остановиться на progress около 0.9. Для вашего автоматического перехода такое управление не требуется.
Проверка
Значение полосы не является точным процентом прошедшего времени. Маленькая сцена может загрузиться почти мгновенно, а некоторые действия при её активации способны вызвать короткую задержку. Проверьте настоящий переход в сборке и нажмите кнопку несколько раз: должна запускаться одна операция. Если RoomB не находится, сравните имя и включение сцены в список используемого профиля. При одинаковых именах в разных папках лучше указывать однозначный путь.
Ответить на вопрос