読者です 読者をやめる 読者になる 読者になる

むずかしいことはわかりません

いろいろ書いてるみたいな

LoadLevelAsync


Unity - Scripting API: AsyncOperation

 

非同期でシーンを読み込むメソッド(Pro版のみ)

 

シーン読み込み後に何かキーを押したら次へ進むをやりたいとき。

allowSceneActivationは、準備が終わり次第なるべく早くロードされたシーンに切り替えるというフラグなので、非同期読み込みが終わった瞬間にシーンを切り替えたければ最初からtrueにする。(原文→Allow scenes to be activated as soon as it is ready.)

 

AsyncOperation.progressは、進行度でこの値の範囲は明記されてないけど、ログで見る限り終わったら0.9fになるので、これを超えた範囲になれば読み込み完了と判断。

(isDoneはいつまでもfalse)

private ASyncOperation asyn;
public string SceneName;
void Start() {
  asyn = Application.LoadLevelAsync(SceneName);
  asyn.allowSceneActivation = false;
}

void Update() {
  if ( asyn.progress >= 0.9f )
  {
    // 読み込み終わったときにシーンを動かすならここ
   if ( Input.anyKeyDown )
{
     asyn.allowSceneActivation = true;
   }
  }
}

LoadLevelAsyncの説明だと、LoadLevelASyncを呼んだあとに

yield return async;

していた。(コルーチンで終了待ちを別途書く