private static bool UnloadBundleAndDependencies( string assetBundleName, string manifestAssetBundleName, bool unloadAllLoadedObjects) { AssetBundleManager.BundlePack targetPack; if (true) { targetPack = AssetBundleManager.m_ManifestBundlePack[manifestAssetBundleName]; } else if (!AssetBundleManager.m_ManifestBundlePack.TryGetValue(manifestAssetBundleName, out targetPack)) { targetPack = AssetBundleManager.m_ManifestBundlePack["abdata"]; } bool flag = AssetBundleManager.UnloadBundle(assetBundleName, targetPack, unloadAllLoadedObjects); if (flag) { LoadedAssetBundleDependencies bundleDependencies = targetPack.Dependencies.Find((Predicate <LoadedAssetBundleDependencies>)(p => p.m_Key == assetBundleName)); if (bundleDependencies != null && --bundleDependencies.m_ReferencedCount == 0) { foreach (string bundleName in bundleDependencies.m_BundleNames) { AssetBundleManager.UnloadBundle(bundleName, targetPack, unloadAllLoadedObjects); } targetPack.Dependencies.Remove(bundleDependencies); } } return(flag); }
public static LoadedAssetBundle GetLoadedAssetBundle( string assetBundleName, out string error, string manifestAssetBundleName = null) { assetBundleName = assetBundleName ?? string.Empty; if (manifestAssetBundleName.IsNullOrEmpty()) { manifestAssetBundleName = "abdata"; } AssetBundleManager.BundlePack bundlePack = AssetBundleManager.m_ManifestBundlePack[manifestAssetBundleName]; if (bundlePack.DownloadingErrors.TryGetValue(assetBundleName, out error)) { return((LoadedAssetBundle)null); } LoadedAssetBundle loadedAssetBundle1 = (LoadedAssetBundle)null; bundlePack.LoadedAssetBundles.TryGetValue(assetBundleName, out loadedAssetBundle1); if (loadedAssetBundle1 == null) { return((LoadedAssetBundle)null); } LoadedAssetBundleDependencies bundleDependencies = bundlePack.Dependencies.Find((Predicate <LoadedAssetBundleDependencies>)(p => p.m_Key == assetBundleName)); if (bundleDependencies == null) { return(loadedAssetBundle1); } foreach (string bundleName in bundleDependencies.m_BundleNames) { if (bundlePack.DownloadingErrors.TryGetValue(assetBundleName, out error)) { return(loadedAssetBundle1); } LoadedAssetBundle loadedAssetBundle2; bundlePack.LoadedAssetBundles.TryGetValue(bundleName, out loadedAssetBundle2); if (loadedAssetBundle2 == null) { return((LoadedAssetBundle)null); } } return(loadedAssetBundle1); }
protected static void LoadDependencies( string assetBundleName, bool isAsync, string manifestAssetBundleName = null) { if (manifestAssetBundleName.IsNullOrEmpty()) { manifestAssetBundleName = "abdata"; } AssetBundleManager.BundlePack bundlePack = AssetBundleManager.m_ManifestBundlePack[manifestAssetBundleName]; if (object.ReferenceEquals((object)bundlePack.AssetBundleManifest, (object)null)) { Debug.LogError((object)"Please initialize AssetBundleManifest by calling AssetBundleManager.Initialize()"); } else { string[] allDependencies = bundlePack.AssetBundleManifest.GetAllDependencies(assetBundleName); if (allDependencies.Length == 0) { return; } for (int index = 0; index < allDependencies.Length; ++index) { allDependencies[index] = AssetBundleManager.RemapVariantName(allDependencies[index], manifestAssetBundleName); } LoadedAssetBundleDependencies bundleDependencies = bundlePack.Dependencies.Find((Predicate <LoadedAssetBundleDependencies>)(p => p.m_Key == assetBundleName)); if (bundleDependencies != null) { ++bundleDependencies.m_ReferencedCount; } else { bundlePack.Dependencies.Add(new LoadedAssetBundleDependencies(assetBundleName, allDependencies)); } for (int index = 0; index < allDependencies.Length; ++index) { AssetBundleManager.LoadAssetBundleInternal(allDependencies[index], isAsync, manifestAssetBundleName); } } }