加载中…
个人资料
_呆____呆_
_呆____呆_
  • 博客等级:
  • 博客积分:0
  • 博客访问:3,696
  • 关注人气:43
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2013-08-01 20:45:33)
标签:

育儿

分类: 【unity3D研究室】

今天遇到一个奇怪的问题,我写了一个协同方法用来跳转场景的,方法如下:

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能尽快改进。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有