场景管理的异步加载

版权声明:转载 请说明 出处 https://blog.csdn.net/qq2512667/article/details/87822143
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using System;
public class DownLoadManager : MonoBehaviour {

    public static DownLoadManager _instance;
    public static DownLoadManager Instance
    {
        get
        {
             _instance = FindObjectOfType<DownLoadManager>();
                if (_instance==null)
                {
                    GameObject temp = null;
                    temp.name = "DownLoadManager";
                    GameObject go= Instantiate(temp);
                    _instance= go.AddComponent<DownLoadManager>();
                } 
           return _instance;
        }
    }

    public delegate void LoadCallBack(params object[] args);
    public void LoadScensBundle(string name,LoadCallBack callBack,params object[] args)
    { 
        StartCoroutine(startLoad(name,callBack,args));
    }
    IEnumerator startLoad(string name, LoadCallBack callBack, params object[] args)
    {
        AsyncOperation async= SceneManager.LoadSceneAsync(name);
        yield return async;

        GC.Collect();
        Resources.UnloadUnusedAssets();

        if (callBack!=null)
        {
            callBack(args);
        }


    }
 
}

 小细节:  GC.Collect();
        Resources.UnloadUnusedAssets();

在加载场景后 收集下GC,再卸载资源。

猜你喜欢

转载自blog.csdn.net/qq2512667/article/details/87822143