public static void addAssetBundle(Enums.AssetBundleIdentifiers bundle, AssetBundle assetBundle) { if (loadedAssetsBundles.ContainsKey((int)bundle)) { loadedAssetsBundles.Remove((int)bundle); } loadedAssetsBundles.Add((int)bundle, assetBundle); }
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); }
/// <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); } }
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); } }
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)); } } }
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"); } } } }