Unity带进度条加载场景及场变黑的解决方法

首先说加载场景显示进度条

简单的来说需要协程+Update

一直用UGUI,进度条就用Slider

别忘了引用

using UnityEngine.UI;
public Slider slider;

如果想在旁边显示个数字百分比,就再加个Text就好了

public Text text;

假设我们所在场景为old,要去往场景new,如何加载并显示进度呢

可以直接在old场景中做,也可以加一个中间场景专门显示加载进度

我们就加个中间场景吧,叫middle

而加载的进度条slder和百分比文字text就在此场景中建立

也就是说至少需要三个脚本

一个挂在old场景中,一个挂在middle场景中,还有一个脚本负责把场景new的名字从old场景中传递至middle场景

首先说传递场景名字的脚本

一句话

public class PassSceneName
{
        public static string SceneName;
}

old场景中的脚本两个动作
1.负责把要打开场景的名字传给PassSceneName
2.打开middle场景

public void GotoNewScene()
{
        PassSceneName.SceneName="new";
        SceneManager.LoadScene("middle");
}

这样,在进入middle场景后,可以通过PassSceneName.SceneName读取到要加载的场景名

而作为加载场景,显然是自动加载,可以在Start方法中就执行异步加载

public Slider slider;
public Text text;

public float speed = 1.0f;

private AsyncOperation op;

private void Start()
{
        StartCoroutine(loadScene());
}

Ienumerator loadScene()
{
        slider.value = 0f;
        op=SceneManager.LoadSceneAsync(PassSceneName.SceneName);
        op.allowSceneActivation = false;     //加载完成不自动切换
        yield return op;
}

private void Update()
{
        if(op != null)
        {
                float val = op.progress;
                slider.value = op.progress;
                int persent=(int)(val * 100);
                text.text = persent + "%";

                if(persent == 100)
                {
                        op.allowSceneActivation = true;      //允许加载完成后切换场景
                }
        }
}

如上,slider的值直接等于异步加载的进度值就好了

slider.value = op.progress;

而百分比文字则是进度x100再取整

在进度达到100%之前不允许自动切换场景,达到100%再允许

其实很简单

再说说加载场景,不亮的问题,也很简单

首先场景肯定用的是实时光设置

那么在lighting面板中

首先把Auto Generate前的勾取消

再点击 Generate Lighting按钮

与baked相同,也会在场景文件同级目录下生成一个同名的文件夹

里面有一个LightingData,一个ReflectionProbe

但与baked不同的是,这个不算是烘焙场景,过程非常快,这样,以后再在程序运行时加载其场景,就不会进去场景变暗了

原文地址:http://blog.51cto.com/shuxiayeshou/2171553

时间: 2024-10-09 06:07:03

Unity带进度条加载场景及场变黑的解决方法的相关文章

简单实用的进度条加载组件loader.js

本文提供一个简单的方法实现一个流程的进度条加载效果,以便在页面中可以通过它来更好地反馈耗时任务的完成进度.要实现这个功能,首先要考虑怎样实现一个静态的进度条效果,类似下面这样的: 这个倒是比较简单,两个div即可,bootstrap官方就提供有多种主题的进度条组件.如果自己要用,参照下别人的代码,写成自己的风格即可,实际上也非常的好理解: .progress { height: 20px; background-color: #f5f5f5; border-radius: 4px; box-sh

超酷jQuery进度条加载动画集合

在丰富多彩的网页世界中,进度条加载动画的形式非常多样,有利用gif图片实现的loading动画,也有利用jQuery和CSS3实现的进度加载动画,本文主要向大家介绍很多jQuery和CSS3实现的进度条加载动画,每一个都非常具有创意.如果你喜欢,可以下载源码并将它们应用到自己的网站中去. HTML5 Canvas发光Loading动画 它是一个Loading加载动画,并不能实现具体进度的加载,但是可以提示用户数据或者页面正在加载.并且该应用利用Canvas绘制动画,效果非常不错. DEMO演示 

学习 | css3实现进度条加载

进度条加载是页面加载时的一种交互效果,这样做的目的是提高用户体验. 进度条的的实现分为3大部分:1.页面布局,2.进度条动效,3.何时进度条增加. 文件目录 加载文件顺序 <link rel="stylesheet/less" href="./index.less"> <script src="./zepto.min.js"></script> <script src="./less.js&qu

[Unity-24] Unity的四种加载场景的方法

Unity官方提供了4种加载场景(scene)的方法,分别是: 1. Application.LoadLevel():同步加载 2. Application.LoadLevelAsync():异步加载 3. Application.LoadLevelAddictive():同步附加式加载 4. Application.LoadLevelAddictiveAsync():异步附加式加载 下面对这四种方法进行简要的介绍和分析: 1.同步加载:假设当前场景为A,我们要切换到场景B,unity会在切换场

unity 5.3 以后加载场景

记录下官方建议的加载场景的方法: StartCoroutine(LoadYourAsyncScene()); IEnumerator LoadYourAsyncScene() { // The Application loads the Scene in the background at the same time as the current Scene. //This is particularly good for creating loading screens. You could

进度条加载

NProgress.js NProgress是基于jquery的,且版本要 >1.8 API: NProgress.start() - 启动进度条 NProgress.set(0.4) - 将进度设置到具体的百分比位置 NProgress.inc() - 少量增加进度 NProgress.done() - 将进度条标为完成状态 引入: <link rel="stylesheet" type="text/css" href="css/NProgr

ecshop网页加载waiting(TTFB)时间过长的解决方法

服务器的内存8G,CPU为4核,宽带8M的阿里云 windows server 2012 . apache 2.4.php 5.3 .mysql 5.5 每次打开网站都觉得有点慢,用谷歌浏览器查看网页加载时间都在1秒以上. 查找原因 在init.php文件在 $start_time =  microtime(true); //放在不同的位置,查看最后输出的时间差定位耗时位置 echo microtime(true) - $start_time;exit; //放在文件最后 最后定位出 if (!

在bootstrap modal 中加载百度地图的信息窗口失效解决方法

这个问题其实很傻,解决方法没有任何技术含量,只是记录下工作中发生的事. 前阵子给一个汽车集团客户做了一个经销商查询系统,其中一个功能是使用地图标注经销商店面地址,并且实现导航功能. 页面演示地址:http://www.lyytqm.com/Dealerships 点击地址区域在模态窗口中显示百度地图,并在地图中标注点位,显示窗口信息,但信息窗口展示的信息频繁失效,仅显示名称. 更换了各种加载数据方式不能解决,在蹲厕所时想到了原因,即可给出解决方法. 原因是bootstrap modal 以及动画

CSS3彩色进度条加载动画 带进度百分比

在线演示       本地下载 原文地址:https://www.cnblogs.com/datiangou/p/9986695.html