Хорошо, проблема в том, что загрузка сцены происходит слишком быстро, и прогресс сразу достигает 0.9, если вы хотите получить больше контроля над ним, вы можете попробовать это:
float time = 0;
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("Rotation");
asyncLoad.allowSceneActivation = false;
while (!asyncLoad.isDone)
{
time += Time.deltaTime;
Debug.Log(asyncLoad.progress+" time is"+time);
if (time > 4.0f)
asyncLoad.allowSceneActivation = true;
yield return null;
}
Он загрузит сцену через 4 секунды, и есливы хотите, чтобы эта сопрограмма продолжала работать после загрузки новой сцены, добавьте DontDestroyOnLoad(this.gameObject)
в Start()
Я также хотел добавить это объяснение, увидев путаницу в комментариях.yield return null
не ломает и не возвращает сопрограмму.Он просто возвращается после того, как ваш while выполняется один раз, а затем сопрограмма продолжается с того места, где она ушла в следующем кадре.Проблема в этом примере заключается в том, что его сцена загружается в 1 кадр, поэтому сопрограмма заканчивается очень быстро.Обычно с yield return null
вы делаете 1 итерацию в каждом кадре.Надеюсь, это поможет удаче!