Example #1
0
        /// <summary>
        /// 加载AssetBundle的方法
        /// </summary>
        /// <param name="abName">要加载AssetBundle的名称</param>
        /// <returns></returns>
        public IEnumerator LoadAssetBundle(string abName) {
            // AssetBundle关系的建立
            if (!_relationDict.ContainsKey(abName)) {
                AssetBundleRelation relation = new AssetBundleRelation(abName);
                _relationDict.Add(abName, relation);
            }

            AssetBundleRelation tmpRelation = _relationDict[abName];
            // 获得所有的依赖关系
            string[] depend = AssetBundleManifestLoader.GetInstance().RetrivalDepend(abName);
            foreach (string itemDepend in depend) {
                tmpRelation.AddDepend(itemDepend); // 添加依赖项
                yield return LoadReference(itemDepend, abName); // 添加引用项
            }

            // 进行AssetBundle加载
            if (_loaderCacheDict.ContainsKey(abName)) { // 加载过了
                yield return _loaderCacheDict[abName].LoadABWWW(); // 加载AssetBundle
            }
            else {
                _currSingleAssetBundleLoader = new SingleAssetBundleLoader(abName, CompleteLoadSingle);
                _loaderCacheDict.Add(abName, _currSingleAssetBundleLoader);
                yield return _currSingleAssetBundleLoader.LoadABWWW();
            }

            yield return null;
        }
Example #2
0
        /// <summary>
        /// 添加引用AssetBundle
        /// </summary>
        /// <param name="abName">AssetBundle名称</param>
        /// <param name="refAbName">被引用的AssetBundle名称</param>
        /// <returns></returns>
        private IEnumerator LoadReference(string abName, string refAbName) {
            if (_relationDict.ContainsKey(abName)) { // AssetBundle已经加载
                AssetBundleRelation tmpRelation = _relationDict[abName];
                tmpRelation.AddReference(refAbName); // 添加引用关系
            }
            else {
                AssetBundleRelation tmpRelation = new AssetBundleRelation(abName);
                tmpRelation.AddReference(refAbName);
                _relationDict.Add(abName, tmpRelation);
                yield return LoadAssetBundle(abName); // 加载依赖包
            }

            yield return null;
        }