/// <summary> /// 加载AB包 /// </summary> /// <param name="abName"></param> /// <returns></returns> public IEnumerator LoadAssetBundle(string abName) { //AB包关系的建立 if (!_DicABRelation.ContainsKey(abName)) { ABRelation abRelationObj = new ABRelation(abName); _DicABRelation.Add(abName, abRelationObj); } ABRelation tmpABReltation = _DicABRelation[abName]; //得到指定AB包所有依赖关系(查询清单文件) string[] strDependenceArray = ABMainfestLoader.GetInstance().RetrivalDependce(abName); foreach (string item_Depence in strDependenceArray) { //添加 依赖项 tmpABReltation.AddDependence(item_Depence); //添加引用项 递归调用 yield return(LoadReference(item_Depence, 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()); } }
private void LoadComplete1(string abName) { SingleABLoader sing1 = new SingleABLoader(_ABName3, LoadComplete2); StartCoroutine(sing1.LoadAssetBundle()); }
private void LoadComplete2(string abName) { _LoadObj = new SingleABLoader(_ABName, LoadComplete3); StartCoroutine(_LoadObj.LoadAssetBundle()); }
private string _ABAssetName3 = "Plane.prefab";//Cube.prefab #region Test1 //private void Start() //{ // _LoadObj = new SingleABLoader(_ABName, LoadComplete); // StartCoroutine(_LoadObj.LoadAssetBundle()); //} //private void LoadComplete(string abName) //{ // UnityEngine.Object tmpObj = _LoadObj.LoadAsset(_ABAssetName1, false); // Instantiate(tmpObj); // UnityEngine.Object tmpObj2 = _LoadObj.LoadAsset(_ABAssetName2, false); // Instantiate(tmpObj2); //} #endregion #region Test2 private void Start() { SingleABLoader _loadDependObj = new SingleABLoader(_ABName2, LoadComplete1); StartCoroutine(_loadDependObj.LoadAssetBundle()); }