Unity3D-UGUI-Image制作异步加载场景进度条

本文介绍了如何使用Unity3D的UGUI系统制作一个异步加载场景的进度条。通过调整Application.LoadLevelAsync的使用方式,解决进度条不连续和无法达到100%的问题,实现平滑的加载动画效果。
摘要由CSDN通过智能技术生成

先看一下我的成果

这里写图片描述

问题

我们通常在玩游戏的时候,会看到进度条加载,为什么要这样做那?

仔细分析一下我们就会明白,其实是主场景包含的资源较多,直接导致加载场景的时间较长,影响了玩家的体验。对于这样的情况,是很容易引起玩家反感的,为了避免这种情形的发生,添加一个加载Loading场景,然后再通过Loading场景来加载主场景,是势在必行的。因为Loading场景包含的资源较少,所以加载速度快。在加载主场景的时候一般会在Loading界面中显示一个进度条来告知玩家当前加载的进度。在Unity中可以通过调用Application.LoadLevelAsync函数来异步加载游戏场景,通过查询AsyncOperation.progress的值来得到场景加载的进度。

//单击加载按钮
public void LoadButton() {
//通过协同加载程序
    StartCoroutine(StartLoading(1));
}
//定义协同
private IEnumerator StartLoading(int scene) {
    //异步加载场景
    AsyncOperation op = Application.LoadLevelAsync(scene);
    //是否操作完成
    while(!op.isDone) {            
        SetLoadingPercentage(op.progress * 100);
        yield return new WaitForEndOfFrame();
    }        
}
  //设置显示进度 
     private void SetLoadingPercentage(int DisplayProgress)    
    {
        progressImg.fillAmount = DisplayProgress * 0.01f;
        proText.text = DisplayProgress.ToString() + "%";
    }
到这里是不是就已经可以实现了那,我只能说基本功能都实现,但是效果不会是理想的。

因为,上面的代码的结果是,进度条并没有连续的显示加载的进度,数字也不是连续出现的,在没有显示到100%就情况下,就直接切换场景了。为什么会是这样那?通过查找资料原因,我们可以发现,其原因在于Application.LoadLevelAsync并不是真正的后台加载,它在每一帧加载一些游戏资源,并给出一个progress值,所以在加载的时候还是会造成游戏

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值