Unity3D:异步加载场景资源进度条

Unity3D中很多时候需要用到异步加载场景或资源.如异步打开一个非常大的场景;两个场景之间的一个过渡;游戏关卡的加载等等,通过添加一个进度条场景的方式可以很好的增强客户体验,并让客户了解场景的加载进程.本文主要介绍进度条场景的实现方法和异步加载AsyncOperation

操作方法

  • 01

    场景搭建:任意建两个场景,分别命名为testScene1、testScene2,两个场景中分别设置"切换场景"按钮,便于立昂场景之间的相互切换,注意,两个切换按钮加载的的场景均是"loadScene";建loadScene场景,用于处理加载进度条.

  • 02

    导入NGUI资源包,在Unity3D菜单栏中选中NGUI-Open-Prefab Toolbar,在Prefab Toolbar窗口中,选中Control - Colored Progress Bar拖拽至Hierarchy面板,修改名字为"Loading";

  • 03

    在Hierarchy面板,Loading添加子物体Label,Label的Context内容为"loading",适当调整字体大小.创建脚本LoadingScripts,UI Root的摄像机Camera添加组件LoadingScripts

  • 04

    LoadingScripts脚本代码如图所示. objProcessBar.GetComponent<UISlider>().value = acOp.progress; 异步加载场景testScene2的速度直接决定了进度条的实际进展速度.

  • 05

    你会发现,加载场景loadScene一闪而过,迅速的就跳转到了场景testScene2.完全无法看到进度条进展的过程.原因是,场景loadScene太小,加载场景loadScene的时间非常非常短,此时用加载场景的速度来控制进度条的进展速度就会让加载场景失去它存在的意义.上述代码简单实用性强,非常适合加载大场景大资源等耗时长的情况

  • 06

    为了满足小资源/场景加载时也显示出进度条,使用如下图所示代码.AsyncOperation另一个重要的属性AsyncOperation.allowSceneActivation acOp.allowSceneActivation = false; acOp.allowSceneActivation = true; 当 acOp.allowSceneActivation = false即使场景已经加载完成,也不会自动跳转,直到acOp.allowSceneActivation = true;

  • 07

    实验一下效果,进度条进展效果良好.仔细观察,进度条1%、2%、3%到100%,完全按照i++的代码设定执行.这时进度条的额进展速度与异步加载场景的速度无关

  • 08

    之所以能够得到满意的效果,每一个百分比的进度都能展示在我们眼前,是因为这个脚本中还有一个重要的语句. yield return new WaitForEndOfFrame();

  • 09

    将该语句移到while循环语句的大括号外面,再次运行Unity3D,看一下效果,你会发现,加载场景loadScene再次一闪而过.这是因为这里的while循环只处理了一个判断i 是否小于 100,一个i++,和一个赋值语句,电脑的执行速度是非常快的,快的有时人眼无法识别.这时 yield return new WaitForEndOfFrame();派上了大用场,每次复制完毕,都要等到帧渲染结束,才能进行下一次循环

  • 10

    赋值语句 objProcessBar.GetComponent<UISlider>().value = i / 100;每次赋值一次,Loading-Thumb-Label的数值就要改变一次,Loading-Overlay的显示面积也会改变一次,每次都要等这些帧渲染完毕,才能进行下一次的循环. yield return new WaitForEndOfFrame()就可以使进度条以肉眼可辨的速度进行变化

  • 11

    异步操作AsyncOperation只有四个属性(Unity圣典中只介绍了三个,还有一个属性是allowSceneActivation),灵活运用四个属性,才能得到想要的效果

(0)

相关推荐

  • Unity3D 使用 WWW 加载场景并显示进度条

    Unity3D 加载场景有很多种方式,做一些小的 DEMO 的时候往往是直接使用 Application.LoadLevel 或者 Application.LoadLevelAsync 函数加载场景, ...

  • 从3个分类出发,深入研究App加载动画

    加载动画远不止我们看到的形式,背后还有关于加载性能的考虑. 数据是软件的血液,数据只有不断加载更新,软件才有生命力.数据加载是用户的经常性操作,因此是提升用户体验的重要方面,也是产品.设计.开发都要考 ...

  • 加载动效项目全解析

    成长期产品如何用最小成本做加载动效统一?4步教你用最小成本达到目标,分别是了解加载动效的价值.成长期产品的加载开展.确定场景及类型.进行竟品分析总结 加载动效的价值 著名的Seo公司Kissmetri ...

  • 怎么在一个jsp页面打开时加载servlet?

    操作方法 01 有很多方法: 一.异步加载.用ajax或jquery的post方式. 二.用struts的action标签.页面一加载就执行一个action, 不过你用servlet就没用了 三.用j ...

  • Win7/Win8.1打开文件夹时假死地址栏的绿色加载条缓慢前进

    在使用Win8/Win8.1操作系统的过程中,可能会遇到打开文件夹假死现象,地址栏的绿色加载条缓慢前进。这种情况一般在打开了存放了大量可执行程序、图片或者视频的文件夹情况下比较常见。 思路一:关闭Wi ...

  • ppt怎么设计加载进度的开头动画效果?

    一般我们经常能见到加载进度的动画,想要设计这样一个动画效果该怎么设计呢?请看下文详细教程. 1.首先启动ppt2010,执行口袋动画-进度加载命令. 2.在个人设计库中选择一种进度加载动画,下载并应用 ...

  • 用360浏览器怎么将资源无法正常加载的网页打开

    今天给大家介绍一下用360浏览器怎么将资源无法正常加载的网页打开的具体操作步骤.1. 首先打开电脑,点击左下角的搜索图标,在打开的搜索框中,输入360安全浏览器,然后点击open,2. 打开进入浏览器 ...

  • “win10”duilib加载资源文件失败怎么办

    电脑运行时,经常弹出"加载资源文件失败",很烦人!这是系统文件缺失导致的.下面小编就教大家"win10"duilib加载资源文件失败怎么办. 操作方法 01 首 ...

  • 【win10】duilib加载资源文件失败

    电脑运行时,经常弹出"加载资源文件失败",很烦人!这是系统文件缺失导致的.下载 操作方法 01 下载"duilib.dll",是一个压缩包:https://cn ...