本記事の内容をはてなブログに転記しました。
すぐにQiitaの記事を削除する予定はありませんが、どちらか一方だけ残すとなったらはてなブログの方を残すと思います。
ご承知おき下さい。
なんかまとまった情報が見あたらなかったので書いておく。(Unity3D 4.3.7p3)
Unity - Scripting API: Application.LoadLevelAsync
Unity - Scripting API: AsyncOperation.allowSceneActivation
//C#で
//どっかからコルーチンを呼ぶ
IEnumerator LoadNextLevel() {
AsyncOperation ao = Application.LoadLevelAsync(nextLevelName);
ao.allowSceneActivation = false;
while( ao.progress < 0.9f ) {
//演出などで確実に待ちを入れたい場合は ( ao.progress < 0.9f || 読み込み時間 < 確実に待たせたい時間 ) みたいな感じで判定
yield return new WaitForEndOfFrame();
}
//次のレベルに遷移
ao.allowSceneActivation = true;
//ao.isDoneはfalseのまま
yield return null;
}
ドキュメントを読んで、じゃあAsyncOperationのisDone見張ってればいいのかな? と思ったらisDoneがいつまで待ってもtrueにならない。
progressも0.9f辺りで止まる。
しかたないのでprogressが0.9f以上になったら読み込みが終わってることにしてallowSceneActivationをtrueにする、特に問題はなさそう。