• 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属性的值,根据自己的需求来。

  • 相关阅读:
    WPF中各个Template的分析(转)
    WPF TreeView
    微信支付文章综合
    WPF 颜色渐变
    史上最全的厦门英语角!赶紧收藏啦!
    SQL008存储过程总结
    SQL SERVER事务处理
    HTTP 头部解释
    为你详细解读HTTP请求头的具体含意
    IIS部署常见问题总结
  • 原文地址:https://www.cnblogs.com/xiaoyulong/p/9427847.html
Copyright © 2020-2023  润新知