Beispiel #1
0
        /// <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));
        }
Beispiel #2
0
        /// <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);
                }
            }
        }