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
必须使用次线程调用/刷新
否则到进度条完全完成前,并不会刷新(即一直停留在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
相关文章推荐
- Unity3D之UGUI——制作异步加载场景进度条
- unity 异步加载场景并显示进度
- Unity:异步加载场景资源进度界面
- unity5.3新API使用进度条,异步加载场景的代码
- unity异步加载场景获取进度实例[笔记]
- 【Unity】场景异步加载进度条的制作
- unity中异步加载游戏场景与异步加载游戏资源进度条
- 【Unity】场景异步加载的进度条制作
- Unity异步加载场景与加载进度条
- unity深入研究--之异步加载游戏场景与异步加载游戏资源进度条
- Unity3D-UGUI-Image制作异步加载场景进度条
- Unity3d异步记载场景&制作Loading场景进度条
- 【unity】异步加载游戏场景与异步加载游戏资源进度条
- 【Unity】场景异步加载的进度条制作
- 异步加载进度条,屏蔽搜索键
- ProgressDialog+Thread实现进度条异步加载
- jquery通过加载状态事件制作进度条
- UGUI提高<四> 异步加载场景进度条
- android 网络异步加载数据进度条
- Canvas制作动态进度加载水球