【Unity3D自学记录】异步加载卡顿问题解决

关于异步加载,很多人都是卡住,然后就进场景了,中间进度条基本没作用了。

雨松大神讲过一篇异步加载的,但是同样也是有问题的,跟直接跳转没什么区别。

但事实上,只要加上一句话就可以完成了。

yield return new WaitForEndOfFrame();
等待直到所有的摄像机和GUI被渲染完成后,在该帧显示在屏幕之前。


代码如下:


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);  
  
    }  
  
}  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发财猫MoneyCat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值