新浪博客

unity异步加载场景-进度一直为0.9的bug(转)

2013-08-01 20:45阅读:
今天遇到一个奇怪的问题,我写了一个协同方法用来跳转场景的,方法如下:
01 public IEnumerator FadeScene(){

02 //开始等待Loading场景加载完毕

03 yield return Application.LoadLevelAsync('Loading');

04 //1.完成后开始加载下一个场景

05
asyncOperation = Application.LoadLevelAsync(nextScene);
06 //2.这里设置为当下一个场景加载完毕后不会进行跳转(unity4.x新增的API)

07 asyncOperation.allowSceneActivation = false;

08

09 //3.定义循环等待异步操作完成

10 while (!asyncOperation.isDone && asyncOperation.progress < 0.9f) {

11 Debug.Log ('Loading ' + asyncOperation.progress);

12 yield return null;

13 }

14

15 //4.等待完成,设置allowSceneActivation为true,开始跳转

16 Debug.Log('loading Complete!');

17 asyncOperation.allowSceneActivation = true;

18 }

大家有可能会很容易的发现第三部循环中的条件判断很奇怪,为什么要在进度大于等于0.9就终止了循环,只判断isDone为true不就OK了么??
这就是问题关键,每次跳转场景时候我发现进度达到0.9之后的打印全部是0.9,不再增长。因此isDone也不会变为true,就这样陷入了死循环中。。。。
后来在unity官方论坛上发现了一个帖子:http://forum.unity3d.com/threads/166106-using-allowSceneActivation?p=1146076&viewfull=1#post1146076
跟我的问题一模一样,于是经过测试是由于新增了[asyncOperation.allowSceneActivation = false;]这样的API就出现了这个问题,希望unity能尽快改进。

我的更多文章

下载客户端阅读体验更佳

APP专享