public SingleAssetBundleLoader(string abName, ABLoadComplete loadCompleteHandler = null)
 {
     this.abName = abName;
     this.abPath = PathTools.GetUrlPath() + "/" + this.abName;
     this.loadCompleteHandler = loadCompleteHandler;
     this.Relation            = new ABRelation(abName);
 }
Beispiel #2
0
        public SingleABLoader(string abName, ABLoadComplete loadComplete)
        {
            assetLoader = null;

            abLoadCompleteHandler = loadComplete;

            this.abName    = abName;
            abDownloadPath = PathTools.GetWWWPath() + "/" + abName;
        }
        public MultiABMgr(string sceneName, string abName, ABLoadComplete abLoadComplete)
        {
            currentSceneName   = sceneName;
            currentABName      = abName;
            singleABLoaderDict = new Dictionary <string, SingleABLoader>();
            abRelationDict     = new Dictionary <string, ABRelation>();

            loadCompleteHandler = abLoadComplete;
        }
        public IEnumerator LoadAssetBundlePack(string sceneName, string abName, ABLoadComplete loadComplete)
        {
            //循环等待manifest加载完成
            //TODO  需要优化(加载队列,回调)
            while (!AssetBundleManifestLoader.GetInstance().IsLoadFinish)
            {
                yield return(null);
            }
            mainfest = AssetBundleManifestLoader.GetInstance().GetMainfest();

            if (!dicAllScenes.ContainsKey(sceneName))
            {
                MultiABManager multiTmpManager = new MultiABManager(abName, loadComplete);
                dicAllScenes.Add(sceneName, multiTmpManager);
            }
            MultiABManager multiManager = dicAllScenes[sceneName];

            yield return(multiManager.LoadAssetBundle(abName));
        }
        /// <summary>
        /// 释放本场景中所有的资源
        /// </summary>
        public void DisposeAllAsset()
        {
            try {
                foreach (var item in singleABLoaderDict.Values)
                {
                    item.DisposeAll();
                }
            } finally {
                singleABLoaderDict.Clear();
                singleABLoaderDict = null;

                abRelationDict.Clear();
                abRelationDict = null;

                currentABName       = null;
                currentSceneName    = null;
                loadCompleteHandler = null;

                Resources.UnloadUnusedAssets();
                System.GC.Collect();
            }
        }
Beispiel #6
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));
        }
Beispiel #7
0
 public MultiABManager(string abName, ABLoadComplete loadAllCompleteHandle)
 {
     this.curABName             = abName;
     this.loadAllCompleteHandle = loadAllCompleteHandle;
     this.dicLoadCache          = new Dictionary <string, SingleAssetBundleLoader>();
 }