/// <summary> /// 释放一个包的资源,并且将包进行卸载,不会对其他有依赖的包进行卸载,但不会卸载已加载的资源 /// </summary> public void UnloadBundle(string bundleName) { if (loadHelperDic.ContainsKey(bundleName)) { IABRelationManager loader = loadHelperDic[bundleName]; List <string> depences = loader.GetDependence(); //先卸载依赖关系 for (int i = 0; i < depences.Count; i++) { if (loadHelperDic.ContainsKey(depences[i])) { IABRelationManager dependence = loadHelperDic[depences[i]]; if (dependence.RemoveRefference(bundleName)) { UnloadBundle(dependence.GetBundleName()); } } } if (loader.GetRefference().Count <= 0) { loader.Dispose(); loadHelperDic.Remove(bundleName); } } }
public void DisposeBundle(string bundleName) { if (loadHelper.ContainsKey(bundleName)) { IABRelationManager loader = loadHelper[bundleName]; List <string> depences = loader.GetDependence(); for (int i = 0; i < depences.Count; i++) { if (loadHelper.ContainsKey(depences[i])) { IABRelationManager depedences = loadHelper[depences[i]]; if (depedences.RemoveRefference(bundleName)) { DisposeBundle(depedences.GetBundleName()); } } } if (loader.GetRefference().Count <= 0) { loader.DisPose(); loadHelper.Remove(bundleName); } } }