// 2. 读取配置文件 private void ReadConfiger(string sceneName) { if (!loadManager.ContainsKey(sceneName)) { ABSceneManager sceneManager = new ABSceneManager(sceneName); sceneManager.ReadConfig(sceneName); loadManager.Add(sceneName, sceneManager); } }
/// <summary> /// 这个AB包是否加载完成 /// </summary> public bool IsLoadingFinished(string sceneName, string fileName) { if (!loadManager.ContainsKey(sceneName)) { Debug.LogError("The LoadManager Not Contains Key : " + sceneName); return(false); } ABSceneManager abScene = loadManager[sceneName]; return(abScene.IsLoadingFinished(fileName)); }
/// <summary> /// 是否加载过这个AB包 /// </summary> public bool IsLoadedAssetBundle(string sceneName, string fileName) { if (!loadManager.ContainsKey(sceneName)) { Debug.Log("没有加载过这个场景 : " + sceneName); return(false); } ABSceneManager abScene = loadManager[sceneName]; return(abScene.IsLoadedAssetBundle(fileName)); }
// 加载AB包的回调 private void LoadCompeleteCallBack(string sceneName, string bundleName) { if (!loadManager.ContainsKey(sceneName)) // 这里 字典里是一定要有的,不然就是哪里出错了 { Debug.LogError("The LoadManager Not Contains Key : " + sceneName + ", That Not Allowed"); return; } ABSceneManager tmpManager = loadManager[sceneName]; StartCoroutine(tmpManager.LoadAssetBundle(bundleName)); // 开启协程,加载AB包 }
// 3.加载AssetBundle包 /// <summary> /// 加载AssetBundle包 /// </summary> public void LoadAssetBundle(string sceneName, string fileName, LoadProgress lp) { if (!loadManager.ContainsKey(sceneName)) { Debug.Log("loadManager Not Contains Key : " + sceneName + ", ReadConfiger first"); ReadConfiger(sceneName); // 读取配置文件,然后存到 loadManager 里 } ABSceneManager abScene = loadManager[sceneName]; abScene.LoadAB(fileName, lp, LoadCompeleteCallBack); }
/// <summary> /// 获取这个AB包下的所有资源名 /// </summary> /// <param name="sceneName">场景名</param> /// <param name="bundleName">场景下的文件夹名</param> public void GetAllAssetNames(string sceneName, string bundleName) { if (!loadManager.ContainsKey(sceneName)) { Debug.LogError("The LoadManager Not Contains Key : " + sceneName); return; } ABSceneManager tmpManager = loadManager[sceneName]; tmpManager.GetAllAssetNames(bundleName); }
/// <summary> /// 释放单个AB包 /// </summary> /// <param name="sceneName">场景名</param> /// <param name="fileName">场景下的文件夹名</param> public void Dispose(string sceneName, string fileName) { if (!loadManager.ContainsKey(sceneName)) { Debug.LogError("The LoadManager Not Contains Key : " + sceneName); return; } ABSceneManager tmpManager = loadManager[sceneName]; tmpManager.Dispose(fileName); }
/// <summary> /// 释放所有资源(当前场景名下的 所有AB包里的所有资源) /// </summary> /// <param name="sceneName">场景名</param> public void UnloadAsset(string sceneName) { if (!loadManager.ContainsKey(sceneName)) { Debug.LogError("The LoadManager Not Contains Key : " + sceneName); return; } ABSceneManager tmpManager = loadManager[sceneName]; tmpManager.UnloadAsset(); }
/// <summary> /// 加载多个资源 /// </summary> /// <param name="sceneName">场景名</param> /// <param name="fileName">场景下的文件夹名</param> /// <param name="assetName">资源名</param> /// <returns></returns> public Object[] LoadAssetWithSubAssets(string sceneName, string fileName, string assetName) { if (!loadManager.ContainsKey(sceneName)) { Debug.LogError("The LoadManager Not Contains Key : " + sceneName); return(null); } ABSceneManager tmpManager = loadManager[sceneName]; return(tmpManager.LoadAssetWithSubAssets(fileName, assetName)); }
/// <summary> /// 获取包名 /// </summary> /// <param name="sceneName"></param> /// <param name="fileName"></param> /// <returns></returns> public string GetBundleName(string sceneName, string fileName) { if (!loadManager.ContainsKey(sceneName)) { Debug.LogError("The LoadManager Not Contains Key : " + sceneName); return(null); } ABSceneManager tmpSceneManager = loadManager[sceneName]; return(tmpSceneManager.GetBundleName(fileName)); }
/// <summary> /// 释放所有AB包和资源 /// </summary> /// <param name="sceneName">场景名</param> public void ReleaseAllBundleAndAssets(string sceneName) { if (!loadManager.ContainsKey(sceneName)) { Debug.LogError("The LoadManager Not Contains Key : " + sceneName); return; } ABSceneManager tmpManager = loadManager[sceneName]; tmpManager.ReleaseAllBundleAndAssets(); System.GC.Collect(); }