美文网首页
跳转场景

跳转场景

作者: 菜鸟的笔记 | 来源:发表于2019-12-25 11:42 被阅读0次

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

    using UnityEngine;
    using UnityEngine.SceneManagement;
    
    public class Class_Name: MonoBehaviour {
    
        void Start () {
            SceneManager.LoadScene("mai 1");
        }
    }
    

    异步加载

        需要三个场景来完成异步加载,开始场景、过渡场景、目标场景,一般会在过渡场景来做个加载进度条。
        假设我们现在有SceneA、SceneB、SceneC三个场景,完成A到B到C的异步加载,并实现加载进度条。


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

    注意:关键函数或属性

    //跳转场景时禁止销毁游戏物体
    DontDestroyOnLoad(trnasform.gameObject);
    
    //跳转到目标场景(allowSceneActivation来控制什么时候跳转场景)
    mAsyncOperation.allowSceneActivation = true;
    
    //progress属性为场景加载进度,但是最大值为0.9f。
    _slider.value = m_AsyncOperation.progress;
    
    

    相关文章

      网友评论

          本文标题:跳转场景

          本文链接:https://www.haomeiwen.com/subject/wqccoctx.html