/// <summary> /// 内部调用, 加载AB包 /// </summary> /// <param name="abName"></param> /// <returns></returns> private IEnumerator LoadAssetBundle(string abName) { // AB包关系的建立 if (!_DicABRelation.ContainsKey(abName)) { //建立关系 ABRelation abRelation = new ABRelation(abName); _DicABRelation.Add(abName, abRelation); } ABRelation tempABRelation = _DicABRelation[abName]; // 获得当前AB包的依赖关系 // 得到指定AB包所有的依赖关系(查询Manifest清单) string[] strDependeceArray = ABManifestLoader.Instance.GetAssetBundleDependce(abName); foreach (var depend in strDependeceArray) { // 添加依赖项 tempABRelation.AddDependence(depend); // 先加载依赖的AB包并设置被依赖关系 yield return(LoadReference(depend, abName)); } //真正加载AB包 if (_DicSingleABLoaderCache.ContainsKey(abName)) { yield return(_DicSingleABLoaderCache[abName].LoadAssetBundle()); } else { _CurrentSingleABLoader = new SingleABLoader(abName, CompleteLoadAB); _DicSingleABLoaderCache.Add(abName, _CurrentSingleABLoader); yield return(_CurrentSingleABLoader.LoadAssetBundle()); } }
void LoadComplete1(string abName) { _loadObj2 = new AssetBundleFramework.SingleABLoader(_assetbundleName, LoadComplete2); StartCoroutine(_loadObj2.LoadAssetBundle()); }
//void Start() //{ // _loadObj = new AssetBundleFramework.SingleABLoader(_assetbundleName, LoadComplete); // StartCoroutine(_loadObj.LoadAssetBundle()); //} //void LoadComplete(string abName) //{ // GameObject prefab = _loadObj.LoadAsset(_assetName) as GameObject; // GameObject.Instantiate(prefab); // prefab.transform.position = new Vector3(0, 0, 0); //} #endregion void Start() { _loadObj = new AssetBundleFramework.SingleABLoader(_assetbundleDependName, LoadComplete1); StartCoroutine(_loadObj.LoadAssetBundle()); }