异步加载卡顿问题解决
来源:互联网 发布:合肥宽信网络运营中心 编辑:程序博客网 时间:2024/06/11 17:50
关于异步加载,很多人都是卡住,然后就进场景了,中间进度条基本没作用了。
雨松大神讲过一篇异步加载的,但是同样也是有问题的,跟直接跳转没什么区别。
但事实上,只要加上一句话就可以完成了。
- yield return new WaitForEndOfFrame();
代码如下:
- using UnityEngine;
- using System.Collections;
- public class Loading : MonoBehaviour {
- private float fps = 10.0f;
- private float time;
- //一组动画的贴图,在编辑器中赋值。
- public Texture2D[] animations;
- private int nowFram;
- //异步对象
- AsyncOperation async;
- //读取场景的进度,它的取值范围在0 - 1 之间。
- int progress = 0;
- void Start()
- {
- //在这里开启一个异步任务,
- //进入loadScene方法。
- StartCoroutine(loadScene());
- }
- //注意这里返回值一定是 IEnumerator
- IEnumerator loadScene()
- {
- yield return new WaitForEndOfFrame();//加上这么一句就可以先显示加载画面然后再进行加载
- async = Application.LoadLevelAsync(Globe.loadName);
- //读取完毕后返回, 系统会自动进入C场景
- yield return async;
- }
- void OnGUI()
- {
- //因为在异步读取场景,
- //所以这里我们可以刷新UI
- DrawAnimation(animations);
- }
- void Update()
- {
- //在这里计算读取的进度,
- //progress 的取值范围在0.1 - 1之间, 但是它不会等于1
- //也就是说progress可能是0.9的时候就直接进入新场景了
- //所以在写进度条的时候需要注意一下。
- //为了计算百分比 所以直接乘以100即可
- progress = (int)(async.progress *100);
- //有了读取进度的数值,大家可以自行制作进度条啦。
- Debug.Log("xuanyusong" +progress);
- }
- //这是一个简单绘制2D动画的方法,没什么好说的。
- void DrawAnimation(Texture2D[] tex)
- {
- time += Time.deltaTime;
- if(time >= 1.0 / fps){
- nowFram++;
- time = 0;
- if(nowFram >= tex.Length)
- {
- nowFram = 0;
- }
- }
- GUI.DrawTexture(new Rect( 100,100,40,60) ,tex[nowFram] );
- //在这里显示读取的进度。
- GUI.Label(new Rect( 100,180,300,60), "lOADING!!!!!" + progress);
- }
- }
0 0
- 异步加载卡顿问题解决
- 【Unity3D自学记录】异步加载卡顿问题解决
- ListView卡顿问题解决
- Allegro 卡顿问题解决
- Slidingmenu卡顿问题解决方案
- treegrid 浏览器卡顿问题解决
- cocos ScrollView(滚动容器)加载大量item导致的卡顿问题解决方案
- Android coverFlow 卡顿问题解决过程
- ViewPager使用FragmentPagerAdapter卡顿问题解决
- android listview 滑动卡顿问题解决
- Android Studio 卡顿问题解决方案
- async 异步进度条,防UI卡顿
- ListView优化使用imageLoader下载和缓存图片,图片异步加载,解决图片多了之后容易卡顿。
- StartCoroutine 加载配置文件卡顿现象严重
- tableview 加载图片卡顿问题
- Loading.LockPersistenManager 加载资源卡顿
- Android RecyclerView加载时大图卡顿
- 解决MATE桌面图标加载卡顿问题
- 2.1.2.文本格式化元素
- 3Sum
- Fibonacci数列的log(n)解法
- C++ Interview Question test-3 question-5
- 2.1.3保留的语义相关元素
- 异步加载卡顿问题解决
- JAVA 备忘录【webservice】 soap
- iOS开发之手势识别
- linux中的文件编码及编码修改
- centos系统配置phpwkhtmltox 扩展
- 马士兵hibernate学习笔记
- NSData dataWithContentsOfURL
- Unity3d中制作Loading场景进度条所遇到的问题
- 第十六章 16.4.3节练习