//private void Start() //{ // _LoadObj = new SingleABLoader(_ABName1, LoadComplete); // //加载AB包 // StartCoroutine(_LoadObj.LoadAssetBundle()); //} //private void LoadComplete(string abName) //{ // //加载AB包中的资源 // UnityEngine.Object tmpObj = _LoadObj.LoadAsset(_AssetName1, false); // Instantiate(tmpObj); //} //private void Update() //{ //} #endregion private void Start() { SingleABLoader _LoadDependObj = new SingleABLoader(_ABDependName1); //加载AB依赖包 StartCoroutine(_LoadDependObj.LoadAssetBundle()); }
//依赖回调函数1 private void LoadDependComplete1(string abName) { Debug.Log("依赖包1(贴图宝)加载完毕,加载依赖包2(材质包)"); SingleABLoader _LoadDependObj2 = new SingleABLoader(_ABDependName2); //加载AB依赖包 StartCoroutine(_LoadDependObj2.LoadAssetBundle()); }
/// <summary> /// 加载AB包 /// </summary> /// <param name="abName">AssetBundle 名称</param> /// <returns></returns> public IEnumerator LoadAssetBundler(string abName, Action loadCompleteHandle = null) { //AB包关系的建立 if (!_DicABRelation.ContainsKey(abName)) { ABRelation abRelationObj = new ABRelation(abName); _DicABRelation.Add(abName, abRelationObj); } ABRelation tmpABRelationObj = _DicABRelation[abName]; string[] strDepedenceArray = ABManifestLoader.GetInstance().RetrivalDependce(abName); //得到指定AB包所有的依赖关系(查询Manifest清单文件) foreach (string item_Depence in strDepedenceArray) { //添加“依赖”项 tmpABRelationObj.AddDependence(item_Depence); //添加"引用"项 (递归调用) yield return(LoadReference(item_Depence, abName)); } //真正加载AB包 if (m_LoadedAssetBundles.ContainsKey(abName)) { Debug.LogError("这个包已经被加载过了: " + abName); //yield return m_LoadedAssetBundles[abName].LoadAssetBundle(loadCompleteHandle); } else { _CurrentSingleABLoader = new SingleABLoader(abName); //m_LoadedAssetBundles.Add(abName, _CurrentSingleABLoader); yield return(_CurrentSingleABLoader.LoadAssetBundle(loadCompleteHandle)); } }//Method_end
//依赖回调函数2 private void LoadDependComplete2(string abName) { Debug.Log("依赖包2(材质包)加载完毕,开始正式加载预设包"); _LoadObj = new SingleABLoader(_ABName1); StartCoroutine(_LoadObj.LoadAssetBundle()); }