Unity3D【脚本】 异步切换场景,显示进度到滚动条
2014-08-28 14:10
609 查看
using UnityEngine; using System.Collections; public class ChangeScene : MonoBehaviour { // 加载场景的名称 public string levelName; // ngui滚动条 public UIScrollBar progressBar; // 异步操作 对象 private AsyncOperation async; void OnClick() { // 在这里开启一个异步任务, // 进入loadScene方法。 StartCoroutine(loadScene()); } // 返回值一定是 IEnumerator IEnumerator loadScene() { // 打开滚动条 progressBar.gameObject.SetActive(true); // 异步读取场景。 async = Application.LoadLevelAsync(levelName); // 读取完毕后返回, 系统会自动进入场景 yield return async; } // 因为在异步读取场景, // 所以这里我们可以刷新UI void OnGUI() { if (async != null) { // 在这里计算读取的进度, // progress 的取值范围在0.1 - 1之间, 但是它不会等于1 // 也就是说progress可能是0.9的时候就直接进入新场景了 // 所以在写进度条的时候需要注意一下。 // 为了计算百分比 所以直接乘以100即可 // 最后,把值赋给滚动条,就可以观察看到加载进度了 progressBar.value = async.progress; Debug.Log((int)(progressBar.value * 100)); } } }
有个问题,上面的加载总是会卡主,滚动条显示不全就加载下一个场景。
// 这里设置为当下一个场景加载完毕后不会进行跳转(unity4.x新增的API) |
asyncOperation.allowSceneActivation = false ; |
最后,async.progress永远在只能达到0.89,所以async.isDone()不可能为true。应该是Bug。
unity异步加载场景-进度一直为0.9的bug
using UnityEngine; using System.Collections; /** * 异步加载场景 */ public class LeaveLoad : MonoBehaviour { // 需要加载的场景名称 public string leaveName; // 滚动条 public UIProgressBar progressbar; private AsyncOperation async; void OnClick() { StartCoroutine (loadScene()); } IEnumerator loadScene() { if (!string.IsNullOrEmpty (leaveName)) { progressbar.gameObject.SetActive(true); async = Application.LoadLevelAsync(leaveName); async.allowSceneActivation = false; //async = Application.LoadLevelAdditiveAsync(leaveName); yield return async; } } void OnGUI() { } IEnumerator Do(float f) { yield return new WaitForSeconds (f); } // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (async != null) { if (progressbar.value >= 0.89f) { progressbar.value = 1f; //Do (1); async.allowSceneActivation = true; } else { progressbar.value = async.progress; Debug.Log((int)(progressbar.value * 100)); } } } }
相关文章推荐
- Unity3D 场景切换异步加载进度
- [cocos2d]场景切换以及切换进度显示
- [cocos2d]场景切换以及切换进度显示
- 场景切换之进度条显示进度百分比
- Unity3D-UGUI-Image制作异步加载场景进度条
- [Unity3D]异步加载游戏场景与异步加载游戏资源进度条
- Unity3D 使用 WWW 加载场景并显示进度条
- Unity3D 技术之加载游戏场景并显示进度条详解
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- Unity3D之UGUI——制作异步加载场景进度条
- Unity3D技术之加载游戏场景并显示进度条实现详解
- Unity3D学习之异步加载游戏场景与异步加载游戏资源进度条
- [Unity3D]异步加载游戏场景与异步加载游戏资源进度条
- Unity3D之异步加载游戏场景中关于进度条显示
- unity 异步加载场景并显示进度
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条