//加载AB包 public IEnumerator LoadAssetBundle(string abName) { //AB包关系的建立 if (!dicABRelation.ContainsKey(abName)) { ABRelation aBRelationObj = new ABRelation(abName); dicABRelation.Add(abName, aBRelationObj); } ABRelation tmpABRelation = dicABRelation[abName]; //得到所有的依赖关系 string[] dependencearray = ABManifestLoader.GetInstance().RetrivalDependence(abName); foreach (string item_dependence in dependencearray) { //添加依赖 tmpABRelation.AddDependence(item_dependence); //添加引用 yield return(LoadRefence(item_dependence, abName)); } //加载 if (dicSingleABLoader.ContainsKey(abName)) { yield return(dicSingleABLoader[abName].LoadAssetBundle()); } else { curSingleABLoader = new SingleABLoader(abName, CompleteAB); dicSingleABLoader.Add(abName, curSingleABLoader); yield return(curSingleABLoader.LoadAssetBundle()); } yield return(null); }
public IEnumerator LoadAssetBundle(string abName) { //ab包依赖关系的建立 if (!m_relationDict.ContainsKey(abName)) { ABRelation tempRelation = new ABRelation(abName); m_relationDict.Add(abName, tempRelation); } ABRelation abRelation = m_relationDict[abName]; //得到ab包所有的依赖关系(查询清单文件) string[] strDependenceArr = ABManifestLoader.Instance.GetAllDependices(abName); for (int i = 0; i < strDependenceArr.Length; i++) { //添加依赖项 abRelation.AddDependence(strDependenceArr[i]); //添加引用项 yield return(LoadReferenceAB(strDependenceArr[i], abName)); } //加载ab包 if (m_singleABDict.ContainsKey(abName)) { yield return(m_singleABDict[abName].LoadAssetBundle()); } else { m_currentSingleABLoader = new SingleABLoader(abName, CompleteLoadABCallBack); m_singleABDict.Add(abName, m_currentSingleABLoader); yield return(m_currentSingleABLoader.LoadAssetBundle()); } }
/// <summary> /// 释放本场景中的所有资源 /// </summary> public void DisposeAllAsset() { List <string> keys = new List <string>(); keys.AddRange(m_singleABDict.Keys); try { for (int i = 0; i < keys.Count; i++) { m_singleABDict[keys[i]].DisposeAll(); } } catch (Exception ex) { Debug.LogError(ex); } finally { m_singleABDict.Clear(); m_singleABDict = null; //释放其他的 m_relationDict.Clear(); m_relationDict = null; m_currentSingleABLoader = null; m_currentScenesName = null; m_currentABName = null; m_ABCompleteHandle = null; //卸载没有使用到的资源 Resources.UnloadUnusedAssets(); //强制GC GC.Collect(); } }
private void Start() { m_abLoader = new SingleABLoader(m_abName, LoadComplate); StartCoroutine(m_abLoader.LoadAssetBundle()); }
// Use this for initialization void Start() { load = new SingleABLoader(ABname, LoadComplete); StartCoroutine(load.LoadAssetBundle()); }
private void OnLoadComplete2(string ABName) { Debug.Log("加载ab包完毕"); m_SingleABLoader3 = new SingleABLoader(ABName3, OnLoadComplete3); StartCoroutine(m_SingleABLoader3.LoadSingleAB()); }
private void OnLoadComplete1(string ABName) { Debug.Log("加载ab包完毕"); m_SingleABLoader2 = new SingleABLoader(ABName2, OnLoadComplete2); StartCoroutine(m_SingleABLoader2.LoadSingleAB()); }
void Start() { m_SingleABLoader1 = new SingleABLoader(ABName1, OnLoadComplete1); StartCoroutine(m_SingleABLoader1.LoadSingleAB()); }