/// <summary> /// Load a asset bundle. /// </summary> public static void Load(string url, int version, Action <AssetBundle> onLoadComplete, ECacheMode cacheMode = ECacheMode.Cache) { #if DEBUG_MY_ASSET_BUNDLE Debug.Log(string.Format("<color={0}>[{1}] Load()</color>: url=\"{2}\" - version=\"{3}\" - cacheMode=\"{4}\"", COLOR, typeof(MyAssetBundleManager).Name, url, version, cacheMode)); #endif if (mDictBundle.ContainsKey(url)) { MyAssetBundle bundle = mDictBundle[url]; if (bundle.Version >= version && bundle.Bundle != null) { #if DEBUG_MY_ASSET_BUNDLE Debug.Log(string.Format("<color={0}>[{1}] Load()</color>: loaded from cache", COLOR, typeof(MyAssetBundleManager).Name)); #endif bundle.CacheMode = cacheMode; if (onLoadComplete != null) { onLoadComplete(bundle.Bundle); } return; } } MyCoroutiner.Start(_DoLoadAssetBundle(url, version, onLoadComplete, cacheMode)); }
/// <summary> /// Load a asset bundle asynchronously. /// </summary> private static IEnumerator _DoLoadAssetBundle(string url, int version, Action <AssetBundle> onLoadComplete, ECacheMode cacheMode = ECacheMode.Cache) { using (WWW www = WWW.LoadFromCacheOrDownload(url, version)) { yield return(www); if (!string.IsNullOrEmpty(www.error)) { Debug.LogError("[" + typeof(MyAssetBundleManager).Name + "] _DoLoadAssetBundle(): Could not load asset bundle url=\"" + url + "\" - version=\"" + version + "\""); } else if (cacheMode != ECacheMode.None) { mDictBundle[url] = new MyAssetBundle() { Bundle = www.assetBundle, Version = version, CacheMode = cacheMode }; } if (onLoadComplete != null) { onLoadComplete(www.assetBundle); } else if (cacheMode == ECacheMode.None) { www.assetBundle.Unload(false); } } }