/// <summary> /// 创建一个场景对应的包 /// </summary> /// <param name="sceneName"></param> private void createSceneAssetBundles(string sceneName) { AssetBundleSceneManager scene = new AssetBundleSceneManager(sceneName); //读取记录文件 scene.ReadRecord(sceneName); nameSceneDict.Add(sceneName, scene); }
/// <summary> /// 加载场景 /// </summary> /// <param name="sceneName"></param> /// <param name="folderName"></param> /// <param name="lp"></param> public void LoadSceneAssetBundle(string sceneName, string folderName, LoadProgress lp) { if (!nameSceneDict.ContainsKey(sceneName)) { //如果没有这个场景 先创建这个场景 再读取一下 createSceneAssetBundles(sceneName); } AssetBundleSceneManager sceneManager = nameSceneDict[sceneName]; //开始加载 sceneManager.LoadAssetBundle(folderName, lp, loadAssetBundleCallback); }
/// <summary> /// 加载资源包的回调 /// </summary> /// <param name="sceneName"></param> /// <param name="bundleName"></param> private void loadAssetBundleCallback(string sceneName, string bundleName) { if (nameSceneDict.ContainsKey(sceneName)) { AssetBundleSceneManager sceneManager = nameSceneDict[sceneName]; StartCoroutine(sceneManager.Load(bundleName)); } else { Debug.LogError("不存在这个场景 : " + sceneName); } }
/// <summary> /// 调试专用 /// </summary> public void GetAllAssetNames(string sceneName, string folderName) { if (nameSceneDict.ContainsKey(sceneName)) { AssetBundleSceneManager sceneManager = nameSceneDict[sceneName]; sceneManager.GetAllAssetNames(folderName); } else { Debug.LogError("不存在这个场景 : " + sceneName); } }
/// <summary> /// 卸载所有包和资源 /// </summary> public void DisposeAndUnLoadAll(string sceneName) { if (nameSceneDict.ContainsKey(sceneName)) { AssetBundleSceneManager sceneManager = nameSceneDict[sceneName]; sceneManager.DisposeAndUnLoadAll(); } else { Debug.LogError("不存在这个场景 : " + sceneName); } }
/// <summary> /// 获取带有子物体的资源 /// </summary> /// <param name="assetName">资源名称</param> /// <returns>所有资源</returns> public Object[] LoadAssetWithSubAssets(string sceneName, string folderName, string assetName) { if (nameSceneDict.ContainsKey(sceneName)) { AssetBundleSceneManager sceneManager = nameSceneDict[sceneName]; return(sceneManager.LoadAssetWithSubAssets(folderName, assetName)); } else { Debug.LogError("不存在这个场景 : " + sceneName); return(null); } }
/// <summary> /// 是否加载完成这个包 /// </summary> /// <param name="folderName">文件夹名</param> /// <returns></returns> public bool IsFinsh(string sceneName, string folderName) { if (nameSceneDict.ContainsKey(sceneName)) { AssetBundleSceneManager sceneManager = nameSceneDict[sceneName]; return(sceneManager.IsFinsh(folderName)); } else { Debug.LogError("不存在这个场景 : " + sceneName); return(false); } }
/// <summary> /// 获取完整包名 /// </summary> public string GetBundleName(string sceneName, string folderName) { if (nameSceneDict.ContainsKey(sceneName)) { AssetBundleSceneManager sceneManager = nameSceneDict[sceneName]; return(sceneManager.GetBundleName(folderName)); } else { Debug.LogError("不存在这个场景 : " + sceneName); return(null); } }