public IEnumerator LoadAssetBundleDependences(string bundleName, string refName, LoadProgrecess progrecess) { if (!loadHelper.ContainsKey(bundleName)) { IABRelationManager loader = new IABRelationManager(); loader.Init(bundleName, progrecess); if (refName != null) { loader.AddReference(refName); } loadHelper.Add(bundleName, loader); yield return(LoadAssetBundles(bundleName)); } else { if (refName != null) { IABRelationManager loader = loadHelper[bundleName]; loader.AddReference(bundleName); } } }
/// <summary> /// 循环处理依赖关系 /// </summary> /// <param name="bundleNmae"></param> public void DisposeBundle(string bundleNmae) { Debug.Log(bundleNmae); if (loadHelper.ContainsKey(bundleNmae)) { IABRelationManager loader = loadHelper[bundleNmae]; List <string> depences = loader.GetDependence(); for (int i = 0; i < depences.Count; i++) { if (loadHelper.ContainsKey(depences[i])) { IABRelationManager dependce = loadHelper[depences[i]]; if (dependce.RemoveReference(bundleNmae)) { DisposeBundle(dependce.GetBundleName()); } } } if (loader.GetReference().Count <= 0) { loader.Dispose(); loadHelper.Remove(bundleNmae); } } else { Debug.Log("bundle is not exist ==" + bundleNmae); } }
/// <summary> /// 打印该资源包中所有资源bundle名 /// </summary> /// <param name="bundleName"></param> public void DebugAssetBundle(string bundleName) { if (loadHelper.ContainsKey(bundleName)) { IABRelationManager loader = loadHelper[bundleName]; loader.DebugerLoader(); } else { Debug.Log("not contain assetbundle ==" + bundleName); } }
public void DisposeAllBundle() { List <string> keys = new List <string>(); keys.AddRange(loadHelper.Keys); for (int i = 0; i < keys.Count; i++) { IABRelationManager loader = loadHelper[keys[i]]; loader.Dispose(); } loadHelper.Clear(); }
/// <summary> /// (外部调用) /// </summary> /// <param name="bundleName"></param> /// <param name="progrecess"></param> /// <param name="callBack"></param> public void LoadAssetBundle(string bundleName, LoadProgrecess progrecess, LoadAssetBundleCallBack callBack) { if (!loadHelper.ContainsKey(bundleName)) { IABRelationManager loader = new IABRelationManager(); loader.Init(bundleName, progrecess); loadHelper.Add(bundleName, loader); callBack(sceneName, bundleName); } else { Debug.Log("IABManager have contain bundle name ==" + bundleName); } }
public IEnumerator LoadAssetBundles(string bundleName) { while (!IABManifestLoader.Instance.IsLoadFinish()) { yield return(null); } IABRelationManager loader = loadHelper[bundleName]; string[] dependences = GetDependences(bundleName); loader.SetDependence(dependences); for (int i = 0; i < dependences.Length; i++) { yield return(LoadAssetBundleDependences(dependences[i], bundleName, loader.GetProgrecess())); } yield return(loader.LoadAssetBundle()); }
public UnityEngine.Object GetSingleResourcess(string bundleName, string resName) { if (loadObj.ContainsKey(bundleName)) { List <UnityEngine.Object> listObj = loadObj[bundleName].GetResObj(resName); if (listObj != null) { return(listObj[0]); } } if (loadHelper.ContainsKey(bundleName))//表示已经加载过bundle { IABRelationManager loader = loadHelper[bundleName]; // lhy change bundleName --> resName UnityEngine.Object tmpObj = loader.GetSingleResources(resName); AssetObj tmpAssetObj = new AssetObj(tmpObj); //缓存里面是否有这个bundle包 if (loadObj.ContainsKey(bundleName)) { AssetResObj tmpAssetResObj = loadObj[bundleName]; tmpAssetResObj.AddResObj(resName, tmpAssetObj); } else { AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj); loadObj.Add(bundleName, tmpRes); } return(tmpObj); } else {//没有加载过 return(null); } }