Unity制作异步加载进度条

在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

你可能感兴趣的:(Unity制作异步加载进度条)