public void ReleseBundle(string bundleName, bool isReleseRes) { if (loadHelperDic.ContainsKey(bundleName)) { ABRelativeM abrM = loadHelperDic[bundleName]; List <string> dependList = abrM.GetDependList(); for (int i = 0; i < dependList.Count; i++) { if (loadHelperDic.ContainsKey(dependList[i])) { ABRelativeM dependAbrm = loadHelperDic[dependList[i]]; if (dependAbrm.RemoveReferBundle(bundleName)) { ReleseBundle(dependAbrm.BundleName, isReleseRes); } } } if (abrM.GetReferList().Count <= 0) { if (isReleseRes) { ReleseBundleAsset(bundleName); } abrM.Dispose(); loadHelperDic.Remove(bundleName); } } }
public void LoadAssetBundle(string bundleName, ABLoadProgress loadProgress, LoadAssetBundleCallBack callBack) { if (!loadHelperDic.ContainsKey(bundleName)) { ABRelativeM abM = new ABRelativeM(); abM.Initial(bundleName, loadProgress); loadHelperDic.Add(bundleName, abM); callBack(scenceName, bundleName); } }
public IEnumerator LoadAssetBundle(string bundleName) { while (!ManifestManager.Instance.IsLoadFinish) { yield return(null); } ABRelativeM abM = loadHelperDic[bundleName]; string[] depends = GetBundleDepends(bundleName); abM.SetDependList(depends); for (int i = 0; i < depends.Length; i++) { yield return(LoadABDepends(depends[i], bundleName, abM.GetLoadProgress())); } yield return(abM.LoadAssetBundle()); }
public IEnumerator LoadABDepends(string bundleName, string refName, ABLoadProgress loadProgress) { if (!loadHelperDic.ContainsKey(bundleName)) { ABRelativeM abM = new ABRelativeM(); abM.Initial(bundleName, loadProgress); loadHelperDic.Add(bundleName, abM); if (refName != null) { abM.AddReferBundle(refName); } yield return(LoadAssetBundle(bundleName)); } else { if (refName != null) { loadHelperDic[bundleName].AddReferBundle(refName); } } }
public Object GetSingleRes(string bundleName, string resName) { //是否缓存了物体 if (loadedAssetMDic.ContainsKey(bundleName)) { List <Object> tmpList = loadedAssetMDic[bundleName].GetLoadedAssets(resName); Debug.Log("已缓存Asset = " + tmpList[0].name); if (tmpList != null) { return(tmpList[0]); } } //是否加载过Bundle if (loadHelperDic.ContainsKey(bundleName)) { ABRelativeM abM = loadHelperDic[bundleName]; Debug.Log("从已缓存bundle中加载 bundleName = " + bundleName + " Asset =" + resName); Object tmpObj = abM.GetSingleRes(resName); Asset assetObj = new Asset(tmpObj); //如果当前已经存在Bundle的BundleAssetM if (loadedAssetMDic.ContainsKey(bundleName)) { BundleAssetM assetM = loadedAssetMDic[bundleName]; assetM.AddAsset(resName, assetObj); } //如果当前不存在该Bundle的BundleAssetM else { BundleAssetM assetM = new BundleAssetM(resName, assetObj); loadedAssetMDic.Add(bundleName, assetM); } return(tmpObj); } else { Debug.Log("Dont Load the Bundle bundleName = " + bundleName); return(null); } }
public Object[] GetMultRes(string bundleName, string resName) { //是否缓存了物体 if (loadedAssetMDic.ContainsKey(bundleName)) { List <Object> tmpList = loadedAssetMDic[bundleName].GetLoadedAssets(resName); if (tmpList != null) { return(tmpList.ToArray()); } } //是否加载过Bundle if (loadHelperDic.ContainsKey(bundleName)) { ABRelativeM abM = loadHelperDic[bundleName]; Object[] tmpObj = abM.GetMultRes(resName); Asset assetObj = new Asset(tmpObj); //如果当前已经缓存过 该 bundleName 的Res if (loadedAssetMDic.ContainsKey(bundleName)) { BundleAssetM assetM = loadedAssetMDic[bundleName]; assetM.AddAsset(resName, assetObj); } //当前未缓存过该bundleName的包 else { BundleAssetM assetM = new BundleAssetM(resName, assetObj); loadedAssetMDic.Add(bundleName, assetM); } return(tmpObj); } else { Debug.Log("Dont Load the Bundle bundleName = " + bundleName); return(null); } }