C# Unity3D Loading场景异步加载代码实现
2018-01-17 14:15
447 查看
using System.Collections; using System.Collections.Generic; using UnityEngine; //引入命名空间 using UnityEngine.SceneManagement; using UnityEngine.UI; /// <summary> /// 异步加载场景管理类 /// </summary> public class LoadingManager : MonoBehaviour { /// <summary> /// 进度条 /// </summary> public Slider progressUI; /// <summary> /// 百分比描述文本 /// </summary> public Text progressValue; /// <summary> /// 异步操作类 /// </summary> private AsyncOperation prog; void Start() { //启动协同 StartCoroutine(LoadAsycLevel()); } /// <summary> /// 设置进度条值 /// </summary> /// <param name="value"></param> private void SetProgressValue(int value) { progressUI.value = value; progressValue.text = "当前加载进度" + value + "%"; } /// <summary> /// 异步加载场景 /// </summary> IEnumerator LoadAsycLevel() { //异步加载场景 prog = SceneManager.LoadSceneAsync("Game"); //如果加载完成,也不进入场景 prog.allowSceneActivation = false; //最终的进度 int toProgress = 0; //显示的进度 int showProgress = 0; //测试了一下,进度最大就是0.9 while (prog.progress < 0.9f) { //toProcess具有随机性 toProgress = (int)(prog.progress * 100); Debug.Log((int)(prog.progress * 100)); while (showProgress < toProgress) { showProgress++; SetProgressValue(showProgress); Debug.Log(string.Format("1-------toProgress={0},showProgress={1}", toProgress, showProgress)); yield return new WaitForEndOfFrame(); //等待一帧 } } //计算0.9---1 其实0.9就是加载好了,我估计真正进入到场景是1 toProgress = 100; while (showProgress < toProgress) { showProgress++; SetProgressValue(showProgress); Debug.Log(string.Format("2-------toProgress={0},showProgress={1}", toProgress, showProgress)); yield return new WaitForEndOfFrame(); //等待一帧 } prog.allowSceneActivation = true; //如果加载完成,可以进入场景 } }
相关文章推荐
- unity3d实现Loading进度条异步加载场景
- 虚幻4中异步加载Pak中地图实现场景切换的动态加载画面
- 安卓代码优化 使用ImageLoader实现图片异步加载
- 【代码笔记】iOS-实现网络图片的异步加载和缓存
- React配合Webpack实现代码分割与异步加载
- 线程的同步异步,以及具体代码实现,使用场景
- 基于jquery的loading 加载提示效果实现代码
- unity5.3新API使用进度条,异步加载场景的代码
- js loading加载效果实现代码
- [置顶] unity中关于异步loading场景的加载
- 【代码笔记】iOS-实现网络图片的异步加载和缓存
- 功夫小子实践开发-资源异步加载及过渡场景的分析和实现
- Unity 异步加载场景的代码
- 【代码笔记】iOS-实现网络图片的异步加载和缓存
- iPhone 上实现异步加载图片并缓存代码
- Silverlight:利用异步加载Xap实现自定义loading效果
- 概述 RequireJS是一个工具库,主要用于客户端的模块管理。它可以让客户端的代码分成一个个模块,实现异步或动态加载,从而提高代码的性能和可维护性。它的模块管理遵守AMD规范(Asynchronou
- AngularJS 实现按需异步加载实例代码
- Unity3D场景异步加载的实现案例
- 异步加载场景loading界面