首页 学习日记正文

Unity加载场景封装

阿沐 学习日记 2020-04-07 650 0 unity

Unity加载场景封装

image.png

1、使用场景:

场景跳转,异步加载,场景切换进度条显示

2、实现原理:

对Unity的场景加载进一步封装【使用自己封装的Mono协程、事件中心】

3、具体实现:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement;

/// <summary>
/// 场景切换
/// </summary>
public class SceneController : SingletonBase<SceneController>
{
    //普通切换场景
    public void LoadScene(string sceneName,UnityAction fun)
    {
        //场景同步加载
        SceneManager.LoadScene(sceneName);
        //加载完再执行
        fun();
    }

    //异步跳转加载场景
    public void LoadSceneAsync(string sceneName,UnityAction fun)
    {
        //场景异步加载  通过Mono管理器开启协程
        MonoMgr.GetInstance().StartCoroutine(realLoadSceneAsync(sceneName,fun));
    }

    //异步跳转场景 具体实现
    private IEnumerator realLoadSceneAsync(string sceneName,UnityAction fun)
    {
        AsyncOperation ao=SceneManager.LoadSceneAsync(sceneName);
        while (!ao.isDone)
        {
            //事件派发 执行 进度条显示
            EventCenter.GetInstance().EventTrigger("SceneLoadAsync",ao.progress);
            yield return ao.progress;
        }
        fun();
    }
}

image.png

打赏

评论

Music