LoginSignup
17
19

More than 5 years have passed since last update.

シーンの非同期ロードがしたいゾ!

Posted at

Unity5になって4まででProじゃないと使えないらしかった”LoadLevelAsync()”。
もしかして使えるのかなーとか思い触ってみました。
途中でシーンが変わってしまうLoadLevelAsyncだと最終結果を見届けられなかったので、
LoadLevelAdditiveAsync()を使ってます。

SceneTest.cs
IEnumerator Start () 
{
    AsyncOperation async = Application.LoadLevelAdditiveAsync( "demoadd");
    //async.allowSceneActivation = false;
    do
    {
        Debug.Log( "progress: " + async.progress + "isDone: " + async.isDone );
        yield return new WaitForEndOfFrame();
    }
    while ( async.isDone == false );

    Debug.Log( "Loading complete");
    Debug.Log( "final progress: " + async.progress + "isDone: " + async.isDone );    
    //async.allowSceneActivation = true;
}

allowSceneActivationについては、画面の遷移を許可するか?っていう意味かなーという認識です。なので、

●遷移を前もって許可しないでおく

●ロード進捗OKッス!(・ω・).oO(progress >= 1.0f or isDone == true になるんだろ?ぐへへ)

●シーン切り替えに当たっての演出的な何か

●演出終わったし遷移を許可するか(allowSceneActivation = true)

●遷移デケター

っていう感じかなーと思ってました。

英語に自信無いニキなので、公式リファ見てください…
Unity - Scripting API: AsyncOperation

まぁ、上のような妄想をしてとりあえずallowSceneActivationは触らずやった結果。

[allowSceneActivation:コードOFF]

progress: 0isDone: False
progress: 0.9isDone: False
Loading complete
final progress: 1isDone: True

結果:シーン追加されたー!やっほい!

では本題。
[allowSceneActivation:コードON]

progress: 0isDone: False
progress: 0.9isDone: False
progress: 0.9isDone: False
progress: 0.9isDone: False
progress: 0.9isDone: False
...

結果:何時まで経ってもロードされねぇ。
なん…やて…

Qiita内に以下のエントリがありました。
C# - Unity3DのLoadLevelAsyncとAsyncOperationで非同期ロードを待ってみる - Qiita
0.9でとまるのはそういうもの、ということなんですかね。

APIの説明でも
【Has the operation finished?】
『処理が完了したか?』という意味だと思うのですが、
処理が完了したか?(ロード可能な時点でtrueになるとは言っていない)

っていうことなのかなー?

自分の結論としては
progress < 0.9 : 読み込み中
else : ロード完了
という認識になりました。
実際0.9になった後にallowSceneActivation = trueにしてロードしても問題出てないからまぁ・・・?

17
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
19