Unity跳转场景

Unity中如何加载场景

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

2、引用using UnityEngine.SceneManagement;

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

 1 using UnityEngine;
 2 using UnityEngine.SceneManagement;
 3
 4 public class TestA : MonoBehaviour
 5 {
 6     private void Start()
 7     {
 8         SceneManager.LoadScene("SceneName");
 9     }
10 }

异步加载:

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

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

在TestA场景中挂载脚本TestA

 1 using UnityEngine;
 2 using UnityEngine.SceneManagement;
 3
 4 public class TestA : MonoBehaviour
 5 {
 6     private void Start()
 7     {
 8         SceneManager.LoadSceneAsync("TestB");
 9     }
10 }

在TestB场景中挂载脚本TestB

 1 using System.Collections;
 2 using UnityEngine;
 3 using UnityEngine.SceneManagement;
 4 using UnityEngine.UI;
 5
 6 public class TestB : MonoBehaviour
 7 {
 8     public Slider slider;                   //加载进度条
 9     private AsyncOperation mAsyncOperation; //异步加载信息
10
11     private void Start()
12     {
13         StartCoroutine(LoadScene());
14     }
15     private void Update()
16     {
17         UpdateSlider();
18     }
19     /// <summary>
20     /// 异步加载场景
21     /// </summary>
22     /// <returns></returns>
23     IEnumerator LoadScene()
24     {
25         mAsyncOperation = SceneManager.LoadSceneAsync("TestC");
26         //不跳转场景,停留在当前场景
27         mAsyncOperation.allowSceneActivation = false;
28         yield return mAsyncOperation;
29     }
30     /// <summary>
31     /// 更新加载进度条
32     /// </summary>
33     private void UpdateSlider()
34     {
35         if (slider.value >= 1)
36         {
37             //跳转到目标场景
38             mAsyncOperation.allowSceneActivation = true;
39             return;
40         }
41         else if (slider.value >= 0.9f)
42         {
43             slider.value += Time.deltaTime;
44             return;
45         }
46         //mAsyncOperation.progress属性为场景加载进度,但是最大值为0.9f。
47         slider.value = mAsyncOperation.progress;
48
49     }
50 }

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

有两点需要注意:

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

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

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

原文地址:https://www.cnblogs.com/xiaoyulong/p/9427847.html

时间: 2024-10-09 08:40:23

Unity跳转场景的相关文章

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

假设A跳转到B,三种方法: 1.按住ctrl键,拖动A上的控件(比如说UIButton)到B上,弹出菜单,选择Modal.不需要写任何代码,在A上点击Button就会跳转到B 2. 按住ctrl键,拖动A上的View Controller到B上,弹出菜单,选择Modal,两个场景间自动添加连接线和图标,选中该图标,打开Storyboard Segue,identifier输入一个标识符,这里以”aaaa”为例.A里需要跳转时,执行下面的代码: 1 [self performSegueWithId

Quick-cocos2d-x3.3 Study (六)--------- 跳转场景和过渡动画

跳转场景 1 app:enterScene("GameScene", nil, "SLIDEINT", 1.0) 2 app:enterScene("GameScene", nil, "FADE", 1.0) 3 app:enterScene("GameScene", nil, "MOVEINB", 1.0) 4 app:enterScene("GameScene",

Quick-Cocos2d-x初学者游戏教程(五) --------------------- 辅助工具和跳转场景

Quick-Cocos2d-x初学者游戏教程(五) 上一章我们创建了游戏的菜单场景,并讲解了一些基础元素的创建,接下来这章,我们会先让大家了解一些接下来游戏开发中需要用到的辅助工具,然后再教大家创建另一个游戏场景,并跳着到该场景中来. 工具介绍 在开始真真的写代码之前,其实早该讲讲以下这些辅助工具的.这些工具可以让我们更好更方便的实现程序中的某些功能,比如地图编辑工具.粒子编辑工具 等.尽管这些工具在我之前的教程中已经不厌其烦的讲了好多次了,但是为了做到真正的初学者教程,本小节还是先来简单的介绍

Unity进度条场景载入的制作思路

有两种做法,如果全部都是AssetsBundle动态载入,可以自己管控加载和释放.还有一种是借助Unity的Level(场景). 如果直接A-B场景切换,我比较担心加载峰值过高,所以采取这种做法:A-L-B.L是进度条专用场景 第一个问题是如何检测,OnLevelWasLoaded可以判断是否新场景加载完了,并调用Application.LoadLevelAsync(...)进行加载,可以通过返回对象获取到加载进度 使用时发现一个比较奇怪的事情,当场景很小秒载的时候,加载进度条执行OnDestr

Rewrite跳转场景

Rewrite跳转场景 URL看起来更规范,合理 企业会将动态URL地址伪装成静态地址提供服务 网址换新域名后,让旧的访问跳转到新的域名上 服务端某些业务调整 Rewrite跳转实现 Rewrite实用场景 Nginx跳转需求的实现方式使用rewrite进行匹配跳转使用if匹配全局变量后跳转使用location匹配再跳转 rewrite放在server{},if{},location{}段中 对域名或参数字符串使用if全局变量匹配使用proxy_pass反向代理 常用的正则表达式元字符 字符 说

unity 背景 按钮 场景跳转

public Texture2D pic; private bool Cl = false; void OnGUI() { GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), pic); GUIStyle style = new GUIStyle(); //实例化一个新的GUIStyle,名称为style ,后期使用 style.fontSize = 50; //字体的大小设置数值越大,字越大,默认颜色为黑色 style.no

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

版权声明:本文为博主原创文章,转载请注明出处. 游戏和电影一样,是通过每一个镜头的串联来实现的,而这样的镜头我们称之为“场景”.一个游戏一般包含一个到多个场景,这些场景里面实现了不同的功能,把它们组合起来就变成一个完整的游戏了.  在电影里面,每个镜头会包含布景,然后还会有演员在表演,摄像机将表演的画面记录下来,然后就变成了电影.同样的,在Unity游戏里面也同样存在相机,它的作用也是将游戏的画面展示在游戏设备的显示屏上面.所不同的是,Unity游戏里面,不论是布景还是人物,所有的东西我们都称之

Unity多个场景叠加或大场景处理方法小结

本文章由cartzhang编写,转载请注明出处. 所有权利保留.  文章链接: http://blog.csdn.net/cartzhang/article/details/47614153 作者:cartzhang 本想写个总结,奈何刚刚接触! 对于Unity中对象,多个场景或大的场景多人分割处理,有不能同时修改一下场景来提交. 这怎么办呢? 方法一,建立Prefab 把某个对象或需要多场景下使用的对象建立一个prefab对象,这样就可以在多场景下使用. 方法二,有高人自有办法 就是自己写了个

unity 3D游戏场景转换

//////////////////2015/07/07//////// /////////////////by xbw/////////////// ///////////////环境 unity 4.6.1// 当需要多个场景时,就用到了场景转换, 这里呢,我有两个场景,一个move(开场镜头),另一个second(游戏场景): 要想运行完开长镜头后接着运行游戏场景,需要用到一个函数::: Application.LoadLevel("second");引号里变是需要运行的场景,即