您的位置:首页 > 移动开发 > Unity3D

Unity制作异步加载进度条

2013-04-07 15:19 253 查看
在Unity中,如果使用NGUI的UISlider来做读取场景(或者其他需要一段时间才能完成的事务)的进度条
必须使用次线程调用/刷新
否则到进度条完全完成前,并不会刷新(即一直停留在0%,直至突然跳到100%)
------------------------------------------------------------------------------------

思路
1. 在绑定的脚本内, 添加一个NGUI的UISlider,以及必要的(float)current, total 记录进度;

2. 在主线程中使用次线程调用方法LoadFoo()读取内容

3. 主线程的void Update() 可以正常刷新UISlider.sliderValue = current / total;
------------------------------------------------------------------------------------

实现

1. 添加一个UISlider, 以及float total, current等内容,以在Update中修改UISlider.sliderValue
(这部分具体实现不再赘述)

2. 在代码中, 将读取进度条的方法LoadFoo()的返回类型改为IEnumerator

3. 在LoadFoo内,每个需要通知刷新UI的地方, 添加一行: yield return 0. 
即告诉Unity这里暂时有个空档,通常是在每次foreach任务完成的最后. 此外在完成后也要yield一次.

4. 在原本调用LoadFoo()的地方, 改为使用次线程调用: StartCoroutine(LoadFoo());

注: Unity目前不支持使用 Thread开启多线程, 必须使用StartCoroutine
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: