
[code]

    public void load(string name) {
        StartCoroutine(LoadNextLevel(name));
    }
    
    IEnumerator LoadNextLevel(string name) {
        AsyncOperation ao = Application.LoadLevelAsync(name);
        ao.allowSceneActivation = false;
    
        while( ao.progress < 0.9f ) {
            yield return new WaitForEndOfFrame();
        }
        //次のレベルに遷移
        ao.allowSceneActivation = true;
    
        yield return null;
    }
    
[/code]

上記のスクリプトをシーン遷移時に起動しています。  
A⇒B⇒A⇒Bといったシーン遷移を繰り返した場合、2回目以降のシーン遷移が行われない場合があります。具体的にはao.progressの値が常に０のままになります。  
原因や解決策などご存知でしょうか。

unity 5.2.2


CC BY-SA 3.0
2015-10-30T01:19:20.127
18228
2016-01-01T07:09:37.450
13038
question
c# unity3d
LoadLevelAsyncでシーンがロードできないことがある


シーン遷移が重なると確かに同じ現象になりました。  
おそらく排他的にシーン遷移を行えば問題なくなるかと思います。

簡単に最低限の改造をしてみました。

[code]

    AsyncOperation ao;
    
    public void load(string name) {
        if (ao != null) return;
        StartCoroutine(LoadNextLevel(name));
    }
    
    IEnumerator LoadNextLevel(string name) {
        ao = Application.LoadLevelAsync(name);
        ao.allowSceneActivation = false;
    
        while( ao.progress < 0.9f ) {
            yield return new WaitForEndOfFrame();
        }
        //次のレベルに遷移
        ao.allowSceneActivation = true;
        ao = null;
    
        yield return null;
    }
    
[/code]


CC BY-SA 3.0
2015-11-02T06:52:16.397
18318
2015-11-02T06:52:16.397
2079
18228
answer