private void SyncLoadAssetBundleDependences(string bundleName, string referName) { if (abDict.ContainsKey(bundleName)) { abDict[bundleName].AddReference(referName); } else { ABRelationManager abLoader = new ABRelationManager(bundleName, null); abDict.Add(bundleName, abLoader); abLoader.AddReference(referName); abLoader.SyncLoadAssetBundle(); } }
public IEnumerator AsyncLoadAssetBundleDependences(string bundleName, string referName, LoadFinish loadFinish) { if (abDict.ContainsKey(bundleName)) { abDict[bundleName].AddReference(referName); } else { ABRelationManager abLoader = new ABRelationManager(bundleName, loadFinish); abDict.Add(bundleName, abLoader); abLoader.AddReference(referName); yield return(AsyncLoadAssetBundle(bundleName)); } }
/// <summary> /// 加载AssetBundle,必须先加载Manifest /// </summary> public IEnumerator AsyncLoadAssetBundle(string bundleName) { while (!ABManifestLoader.Instance.IsLoadFinish()) { yield return(null); } ABRelationManager abLoader = abDict[bundleName]; string[] dependence = ABManifestLoader.Instance.GetDependence(bundleName); abLoader.SetDependence(dependence); for (int i = 0; i < dependence.Length; ++i) { yield return(AsyncLoadAssetBundleDependences(dependence[i], bundleName, abLoader.GetLoadFinish())); } yield return(abLoader.AsyncLoadAssetBundle()); }
public void SyncLoadAssetBundle(string bundleName) { if (abDict.ContainsKey(bundleName)) { return; } ABRelationManager abLoader = new ABRelationManager(bundleName, null); abDict.Add(bundleName, abLoader); string[] dependence = ABManifestLoader.Instance.GetDependence(bundleName); abLoader.SetDependence(dependence); for (int i = 0; i < dependence.Length; ++i) { SyncLoadAssetBundleDependences(dependence[i], bundleName); } abLoader.SyncLoadAssetBundle(); }
public void AsyncLoadAssetBundle(string bundleName, LoadFinish loadFinish, LoadAssetBundleCallBack callBack) { if (abDict.ContainsKey(bundleName)) { if (loadFinish != null) { loadFinish(bundleName); } return; } ABRelationManager abLoader = new ABRelationManager(bundleName, loadFinish); abDict.Add(bundleName, abLoader); if (callBack != null) { callBack(sceneName, bundleName); } }
public void ReleaseAll(string bundleName) { if (!abDict.ContainsKey(bundleName)) { return; } List <string> dependence = abDict[bundleName].GetDependence(); for (int i = 0; i < dependence.Count; ++i) { ABRelationManager abLoader = abDict[dependence[i]]; abLoader.RemoveReference(bundleName); //当没有引用时,释放 if (abLoader.GetReference().Count <= 0) { DisposeAll(dependence[i]); } } //当没有引用时,释放 if (abDict[bundleName].GetReference().Count <= 0) { DisposeAll(bundleName); } }