Unity中如何加载场景

1、首先需要将场景添加到 Build Settings中,如下图:

2、引用using UnityEngine.SceneManagement;

同步加载:如果场景很大,有可能会卡顿。

 using UnityEngine;
using UnityEngine.SceneManagement; public class TestA : MonoBehaviour
{
private void Start()
{
SceneManager.LoadScene("SceneName");
}
}

异步加载:

我们需要三个场景来完成异步加载,开始场景、过渡场景、目标场景,一般会在过渡场景来做个加载进度条。

假设我们现在有TestA、TestB、TestC三个场景,如何完成A到B到C的异步加载,并实现加载进度条呢?代码如下:

在TestA场景中挂载脚本TestA

 using UnityEngine;
using UnityEngine.SceneManagement; public class TestA : MonoBehaviour
{
private void Start()
{
SceneManager.LoadSceneAsync("TestB");
}
}

在TestB场景中挂载脚本TestB

 using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI; public class TestB : MonoBehaviour
{
public Slider slider; //加载进度条
private AsyncOperation mAsyncOperation; //异步加载信息 private void Start()
{
StartCoroutine(LoadScene());
}
private void Update()
{
UpdateSlider();
}
/// <summary>
/// 异步加载场景
/// </summary>
/// <returns></returns>
IEnumerator LoadScene()
{
mAsyncOperation = SceneManager.LoadSceneAsync("TestC");
//不跳转场景,停留在当前场景
mAsyncOperation.allowSceneActivation = false;
yield return mAsyncOperation;
}
/// <summary>
/// 更新加载进度条
/// </summary>
private void UpdateSlider()
{
if (slider.value >= )
{
//跳转到目标场景
mAsyncOperation.allowSceneActivation = true;
return;
}
else if (slider.value >= 0.9f)
{
slider.value += Time.deltaTime;
return;
}
//mAsyncOperation.progress属性为场景加载进度,但是最大值为0.9f。
slider.value = mAsyncOperation.progress; }
}

这样就可以完成异步加载,并实现加载进度条。

有两点需要注意:

1、mAsyncOperation.progress属性最大值为0.9f。

2、用mAsyncOperation.allowSceneActivation来控制什么时候跳转场景。

如果场景太小的,加载会非常快,进度条会一闪而过,所以进度条是否使用mAsyncOperation.progress属性的值,根据自己的需求来。

Unity跳转场景的更多相关文章

  1. Unity跳转场景进度条制作教程(异步加载)

    Unity跳转场景进度条制作 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...

  2. iOS开发 跳转场景的三种方式

    iOS开发 跳转场景的三种方式 2012年10月17日, 15:32 假设A跳转到B,三种方法:1.按住ctrl键,拖动A上的控件(比如说UIButton)到B上,弹出菜单,选择Modal.不需要写任 ...

  3. storyboard三种sugue 和 跳转场景的三种方式 以及控制器之间的传值

    Storyboard引入了2个概念:1. scene:一个场景,由一个viewController和相关的xib表示. 2. segue:在这是用于连接scenes,其有多种类型,iphone包括:P ...

  4. HoloLens开发手记 - Unity之Persistence 场景保持

    Persistence 场景保持是HoloLens全息体验的一个关键特性,当用户离开原场景中时,原场景中全息对象会保持在特定位置,当用户回到原场景时,能够准确还原原场景的全息内容.WorldAncho ...

  5. 【Unity入门】场景、游戏物体和组件的概念

    版权声明:本文为博主原创文章,转载请注明出处. 游戏和电影一样,是通过每一个镜头的串联来实现的,而这样的镜头我们称之为“场景”.一个游戏一般包含一个到多个场景,这些场景里面实现了不同的功能,把它们组合 ...

  6. 【Unity入门】场景编辑与场景漫游快捷键

    版权声明:本文为博主原创文章,转载请注明出处. 打开Unity主窗口,选择顶部菜单栏的“GameObject”->“3D Object”->“Plane”在游戏场景里面添加一个面板对象.然 ...

  7. Firefly的角色跳转场景简单示例

    源地址:http://bbs.9miao.com/thread-45790-1-2.html 本例演示的是模拟游戏服务端,让角色在场景1中跳转到场景2中.在实际游戏中,client将要跳转的角色id和 ...

  8. unity中实现场景之间加载进度条

    using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using UnityEngine.UI ...

  9. unity 3D游戏场景转换

    //////////////////2015/07/07//////// /////////////////by xbw/////////////// ///////////////环境 unity ...

随机推荐

  1. zookeeper第一篇

    它是一个为分布式应用提供一致性服务的软件, 提供的功能包括:配置维护.域名服务.分布式同步.组服务等.

  2. html跳动的心实现代码

    <style>         .box{             width: 200px;             height: 400px;             positio ...

  3. cpu资源长期使用率过高导致系统内核锁问题

    服务器跑大量高负载程序,会造成cpu soft lockup. 解决办法: #追加到配置文件中 echo 30 > /proc/sys/kernel/watchdog_thresh #查看 [r ...

  4. aop原理及理解

    概念 Aspect Oriented Programming,面向切面编程,实际上它是一个规范.一种设计思路,总之是抽象的. 先上图 使用目的 从项目结构上来说 对业务逻辑的各个部分进行隔离,降低业务 ...

  5. MySQL添加用户并授权

    一. 创建用户 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明: username:你将创建的用户名 host:指定该用户 ...

  6. C#使用Mutex实现单例应用程序

    不少应用程序有单一实例的需求,也就是同时只能开启一个实例(一般也就是一个进程). 实现的方式可能有判断进程名字,使用特殊文件等等,但是最靠谱的方式还是使用系统提供的 Mutex 工具. Mutex是互 ...

  7. 【SVN】关于提交代码时的问题

    将项目上传到SVN弹出框提示One added/edited TODO item was found. Would you like to review it? 然后百度说这样解决: 造成这个原因是因 ...

  8. python异常捕捉以及处理

    看标题觉得高大上,好像能处理所有的异常.但是,事实是只能按照字面的意思来理解这一段话. 众所周知写代码哪有不出bug的? 那么出现了bug 我们不想让程序因为bug的存在而退出.那么要怎么做呢? 今天 ...

  9. 第六周博客作业 <西北师范大学| 周安伟>

    第六周博客作业 助教博客链接:https://home.cnblogs.com/u/zaw-315/ 本周工作:评阅作业24份点评困难的作业:无作业要求:https://www.cnblogs.com ...

  10. pandas用法之二

    1,函数应用 ①map() 将函数作用于一个Series的每一个函数(不能是DataFrame) 类似于Python的高阶函数map() 函数可以是Numpy中的通用函数,也可以是自定义函数 优点:代 ...