Пример #1
0
        /// <summary>
        /// 加载(AB包中)资源
        /// </summary>
        public UnityEngine.Object LoadAsset(string sceneName, string abName, string assetName, bool isCache)
        {
            if (multiABMgrDict.ContainsKey(sceneName))
            {
                MultiABMgr multiABMgr = multiABMgrDict[sceneName];
                return(multiABMgr.LoadAsset(abName, assetName, isCache));
            }

            Debug.LogError(GetType() + "/LoadAsset()/找不到场景名称,无法加载资源,请检查! sceneName: " + sceneName);

            return(null);
        }
Пример #2
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void DisposeAllAsset(string sceneName)
 {
     if (multiABMgrDict.ContainsKey(sceneName))
     {
         MultiABMgr multiABMgr = multiABMgrDict[sceneName];
         multiABMgr.DisposeAllAsset();
     }
     else
     {
         Debug.LogError(GetType() + "/LoadAsset()/找不到场景名称,无法释放资源,请检查! sceneName: " + sceneName);
     }
 }
Пример #3
0
        public IEnumerator LoadAssetBundle(string sceneName, string abName, ABLoadComplete abLoadComplete)
        {
            // 参数检查
            if (string.IsNullOrEmpty(sceneName) || string.IsNullOrEmpty(abName))
            {
                Debug.LogError(GetType() + "/LoadAssetBundle()/sceneName or abName == null,请检查!");
                yield return(null);
            }

            // 等待Manifest文件加载完成
            while (!ABManifestLoader.Instance.IsLoaded)
            {
                yield return(null);
            }
            manifest = ABManifestLoader.Instance.GetABManifest();
            if (manifest == null)
            {
                Debug.LogError(GetType() + "/LoadAssetBundle()/manifest == null,请检查!");
                yield return(null);
            }

            // 加入当前场景
            if (!multiABMgrDict.ContainsKey(sceneName))
            {
                MultiABMgr multiABMgr = new MultiABMgr(sceneName, abName, abLoadComplete);
                multiABMgrDict.Add(sceneName, multiABMgr);
            }

            // 调用下一层(多包管理)
            MultiABMgr tempMultiABMgr = multiABMgrDict[sceneName];

            if (tempMultiABMgr == null)
            {
                Debug.LogError(GetType() + "/LoadAssetBundle()/tempMultiABMgr == null,请检查!");
            }

            yield return(tempMultiABMgr.LoadAssetBundle(abName));
        }