示例#1
0
    public static void addAssetBundle(Enums.AssetBundleIdentifiers bundle, AssetBundle assetBundle)
    {
        if (loadedAssetsBundles.ContainsKey((int)bundle))
        {
            loadedAssetsBundles.Remove((int)bundle);
        }

        loadedAssetsBundles.Add((int)bundle, assetBundle);
    }
示例#2
0
    public static void setAssetBundleVersion(Enums.AssetBundleIdentifiers bundle, int version)
    {
        if (assetBundleVersions.ContainsKey((int)bundle))
        {
            assetBundleVersions.Remove((int)bundle);
        }

        assetBundleVersions.Add((int)bundle, version);

        PlayerPrefs.SetInt("bundle-version-" + (int)bundle, version);
    }
示例#3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="bundle"></param>
 /// <returns>Returns the asset bundle or null if it's not loaded.</returns>
 public static AssetBundle getAssetBundle(Enums.AssetBundleIdentifiers bundle)
 {
     if (loadedAssetsBundles.ContainsKey((int)bundle))
     {
         return(loadedAssetsBundles[(int)bundle]);
     }
     else
     {
         return(null);
     }
 }
示例#4
0
    public static void removeAssetBundle(Enums.AssetBundleIdentifiers bundle)
    {
        if (loadedAssetsBundles.ContainsKey((int)bundle))
        {
            Debug.Log("Unloading asset bundle: " + bundle.ToString());
            if (loadedAssetsBundles[(int)bundle] != null)
            {
                loadedAssetsBundles[(int)bundle].Unload(true);
            }

            loadedAssetsBundles.Remove((int)bundle);
        }
    }
示例#5
0
 public static int getAssetBundleVersion(Enums.AssetBundleIdentifiers bundle)
 {
     if (assetBundleVersions.ContainsKey((int)bundle))
     {
         return(assetBundleVersions[(int)bundle]);
     }
     else
     {
         if (PlayerPrefs.GetInt("bundle-version-" + (int)bundle, -1) == -1)
         {
             return(1);
         }
         else
         {
             return(PlayerPrefs.GetInt("bundle-version-" + (int)bundle, -1));
         }
     }
 }
示例#6
0
    public static IEnumerator loadBundle(Enums.AssetBundleIdentifiers bundleIdentifier, UnityAction <AssetBundle> callback, UnityAction <UnityWebRequest> downloadProgress, bool shouldBeCached)
    {
        string platformBundleName = bundleIdentifier.ToString().ToLower();

#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX
        platformBundleName += "-Mac";
#elif UNITY_ANDROID
        platformBundleName += "-Android";
#elif UNITY_IOS
        platformBundleName += "-IOS";
#elif UNITY_STANDALONE_LINUX
        platformBundleName += "-Linux";
#endif

        List <Hash128> cachedVersions = new List <Hash128>();
        Caching.GetCachedVersions(platformBundleName, cachedVersions);
        Hash128 versionCheckHash = Hash128.Compute(AssetBundleManager.getAssetBundleVersion(bundleIdentifier).ToString());
        if (!cachedVersions.Contains(versionCheckHash) && shouldBeCached)
        {
            Debug.LogError("=============");
            Debug.LogError("Asset bundle: '" + platformBundleName + "' should have been cached, but isn't.");
            Debug.LogError("=============");
        }

        if (!cachedVersions.Contains(versionCheckHash) && AssetBundleManager.getAssetBundle(bundleIdentifier) != null)
        {
            Debug.Log("Removing old asset bundle version from cache.");
            AssetBundleManager.removeAssetBundle(bundleIdentifier);
        }

        string bundleUrl = bundleBaseUrl + platformBundleName;
        Debug.Log("Bundle URL: " + bundleUrl);

        UnityWebRequest req = UnityWebRequestAssetBundle.GetAssetBundle(bundleUrl, versionCheckHash, 0);
        if (downloadProgress != null)
        {
            downloadProgress(req);
        }
        yield return(req.SendWebRequest());

        if (req.isNetworkError)
        {
            Debug.LogError("Network error. " + req.responseCode);
        }
        else
        {
            if (AssetBundleManager.getAssetBundle(bundleIdentifier) != null)
            {
                Debug.Log("Asset bundle loaded from memory!");
                callback(AssetBundleManager.getAssetBundle(bundleIdentifier));
            }
            else
            {
                AssetBundle assetBundle = DownloadHandlerAssetBundle.GetContent(req);
                if (assetBundle != null)
                {
                    Debug.Log("Asset bundle loaded!");
                    AssetBundleManager.addAssetBundle(bundleIdentifier, assetBundle);
                    callback(assetBundle);
                }
                else
                {
                    Debug.LogError("BUNDLE IS NULL");
                }
            }
        }
    }