Unity3d_UGUI加载场景进度条
2015-06-03 20:41
465 查看
项目之初,选用UGUI要做异步加载功能的loading界面。
当时UGUI相关的资源很少,多数都为NGUI的文章。
如果刚开始做异步加载,自己写的话会遇到bug,就是到了进度会卡在90%。当时有到外国的网站找解决方案,大多数都是到了90%后,继续人为加载。
不过后来有搜到下面这位大神的文章
原文:http://ez-dev.cn/?p=30
该脚本存在bug:
①在toProgress = (int)(op.progress * 100);要加一个括号,被这边坑了很久,否则会一直卡住
②AsyncOperation op要在协程意外定义,否则打包到安卓上会卡住
修改后的代码:
关于UGUI加载场景进度条暂时就到这了,如果有什么不对或者遗漏的地方请指正!谢谢
当时UGUI相关的资源很少,多数都为NGUI的文章。
如果刚开始做异步加载,自己写的话会遇到bug,就是到了进度会卡在90%。当时有到外国的网站找解决方案,大多数都是到了90%后,继续人为加载。
不过后来有搜到下面这位大神的文章
原文:http://ez-dev.cn/?p=30
using UnityEngine; using System.Collections; using UnityEngine.UI; public class ButtonMessage : MonoBehaviour { public Slider progress; public Text progressValue; void Start() { progress.enabled = false; progress.gameObject.SetActive(false); } public void OnStartClick2() { Application.LoadLevel(1); } public void OnStartClick() { progress.gameObject.SetActive(true); StartCoroutine(LoadingScene(1)); } private void setProgressValue(int value) { progress.value = value; progressValue.text = value + “%“; } private IEnumerator LoadingScene(int scene) { int displayProgress = 0; int toProgress = 0; AsyncOperation op = Application.LoadLevelAsync(scene); op.allowSceneActivation = false; while(op.progress < 0.9f) { toProgress = (int)op.progress * 100; while(displayProgress < toProgress) { ++displayProgress; setProgressValue(displayProgress); yield return new WaitForEndOfFrame(); } } toProgress = 100; while(displayProgress < toProgress){ ++displayProgress; setProgressValue(displayProgress); yield return new WaitForEndOfFrame(); } op.allowSceneActivation = true; } }
该脚本存在bug:
①在toProgress = (int)(op.progress * 100);要加一个括号,被这边坑了很久,否则会一直卡住
②AsyncOperation op要在协程意外定义,否则打包到安卓上会卡住
修改后的代码:
using UnityEngine; using System.Collections; using UnityEngine.UI; public class ButtonMessage : MonoBehaviour { public Slider progress; public Text progressValue; private AsyncOperation op; void Start() { op = Application.LoadLevelAsync("要跳转的关卡"); StartCoroutine(LoadingScene()); } private void setProgressValue(int value) { progress.value = value; progressValue.text = value + “%“; } private IEnumerator LoadingScene() { int displayProgress = 0; int toProgress = 0; op.allowSceneActivation = false; while(op.progress < 0.9f) { toProgress = (int)op.progress * 100; while(displayProgress < toProgress) { ++displayProgress; setProgressValue(displayProgress); yield return new WaitForEndOfFrame(); } } toProgress = 100; while(displayProgress < toProgress){ ++displayProgress; setProgressValue(displayProgress); yield return new WaitForEndOfFrame(); } op.allowSceneActivation = true; } }
关于UGUI加载场景进度条暂时就到这了,如果有什么不对或者遗漏的地方请指正!谢谢
相关文章推荐
- C#Socket服务器开发(Unity)
- unity3d_角色与障碍物遮挡
- Unity自定义定时器
- unity, 忽略碰撞
- unity3d ngui-TweenRotation-TweenPosition-TweenScale
- unity3d Ngui UISlider
- 開始Unity3D的学习之旅
- 【Unity3D ugui】简单控件的事件监听
- Unity Camera
- Unity Rigidbody
- Unity3D开发 - Unity3d与iOS交互开发(接入平台SDK)
- Unity中实现全局管理类的几种方式
- Unity5.0与Android交互
- Unity3D开发 - 生成unitypackage包
- Unity3D开发 - 导出iOS项目
- 高通AR增强现实多卡识别和扩展跟踪Unity
- Unity3d_Stats和优化
- Unity在切换横竖屏时闪退的bug
- 设计战斗引导剧情(欢迎探讨)
- Unity- 学习笔记笔记BroadCastMessage