今天遇到一个奇怪的问题,我写了一个协同方法用来跳转场景的,方法如下:
01 |
public IEnumerator
FadeScene(){ |
03 |
yield return Application.LoadLevelAsync( "Loading" ); |
05 |
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能尽快改进。
加载中,请稍候......