unity异步加载场景-进度一直为0.9的bug(转)
2013-08-01 20:45阅读:
今天遇到一个奇怪的问题,我写了一个协同方法用来跳转场景的,方法如下:
01 |
public IEnumerator
FadeScene(){ |
03 |
yield
return
Application.LoadLevelAsync('Loading'); |
asyncOperation =
Application.LoadLevelAsync(nextScene);
06 |
//2.这里设置为当下一个场景加载完毕后不会进行跳转(unity4.x新增的API) |
07 |
asyncOperation.allowSceneActivation =
false; |
10 |
while
(!asyncOperation.isDone
&& asyncOperation.progress < 0.9f) { |
11 |
Debug.Log
('Loading ' +
asyncOperation.progress); |
15 |
//4.等待完成,设置allowSceneActivation为true,开始跳转 |
16 |
Debug.Log('loading
Complete!'); |
17 |
asyncOperation.allowSceneActivation =
true; |
大家有可能会很容易的发现第三部循环中的条件判断很奇怪,为什么要在进度大于等于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能尽快改进。