在unity3d里怎么做进度条

 我来答
咕咕七七咩咩
2019-09-26 · TA获得超过1万个赞
知道答主
回答量:589
采纳率:83%
帮助的人:30.9万
展开全部

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

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

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

四、LoadingScripts脚本代码如图所示。

objProcessBar.GetComponent<UISlider>().value = acOp.progress;

异步加载场景testScene2的速度直接决定了进度条的实际进展速度。

五、加载场景loadScene一闪而过,迅速的就跳转到了场景testScene2。完全无法看到进度条进展的过程。上述代码简单实用性强,非常适合加载大场景大资源等耗时长的情况。

六、为了满足小资源/场景加载时也显示出进度条,使用如下图所示代码。AsyncOperation另一个重要的属性AsyncOperation.allowSceneActivation

 acOp.allowSceneActivation = false;

 acOp.allowSceneActivation = true;

当acOp.allowSceneActivation = false即使场景已经加载完成,也不会自动跳转,直到acOp.allowSceneActivation = true;

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

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

九、将该语句移到while循环语句的大括号外面,再次运行Unity3D,看一下效果,会发现加载场景loadScene再次一闪而过。这是因为这里的while循环只处理了一个判断i 是否小于 100,一个i++,和一个赋值语句,电脑的执行速度非常快,快的有时人眼无法识别。

百度网友c7e1877
2016-04-14 · TA获得超过4670个赞
知道大有可为答主
回答量:4996
采纳率:81%
帮助的人:1450万
展开全部
用NGUI插件,安装后它里面就有示例。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灬清龙阳累0m
2016-04-16 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:81万
展开全部
  1. 新建两个场景,保存为level1和level2

2.将图片素材放进工程文件中,分别作为关卡背景、进度条背景和进度条前景

3.创建C#脚本,取名Life

4.打开脚本,加入如图所示代码

5.将脚本拖拽到摄像机上,将三张图片对号入座到图片变量中

6.按播放键调试

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式