示例#1
0
    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);
    }
示例#2
0
    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);
    }
示例#3
0
 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);
         }
     }
 }