Ejemplo n.º 1
0
            private List <string> dependentBundleNamesLoading;           //当前正在加载的依赖包名列表

            public KTBundleLoader CreateBundleLoader(string bundleName, Action <KTBundleLoader> callback)
            {
                var loader = new KTBundleLoader()
                {
                    requestBundleName  = bundleName,
                    cacheType          = bundleName == requestBundleName?cacheType: BundleCacheType.TimeoutCache,
                    cacheTimeout       = bundleName == requestBundleName ? cacheTimeout:0,
                    callbackForManager = callback
                };

                loader.Subscribe(this);

                if (dependentBundleNamesLoading == null)
                {
                    dependentBundleNamesLoading = new List <string>()
                    {
                        bundleName
                    }
                }
                ;
                else
                {
                    dependentBundleNamesLoading.Add(bundleName);
                }

                return(loader);
            }
Ejemplo n.º 2
0
        /// <summary>
        /// 此种方式只能加载需要预加载的依赖包
        /// </summary>
        /// <param name="bundleName"></param>
        /// <param name="completeCallback"></param>
        /// <param name="cacheTimeout"></param>
        public void LoadBundle(string bundleName, Action <string> completeCallback = null)
        {
            if (!CheckInited())
            {
                completeCallback?.Invoke("");
                return;
            }

            IncreaseRef(bundleName);

            var bundleLoader = new KTBundleLoader()
            {
                requestBundleName  = bundleName,
                cacheType          = BundleCacheType.Share,
                request            = AssetBundle.LoadFromFileAsync(bundleName),
                callbackForManager = BundleCompleteCallback
            };

            Action <KTBundleLoader> callback = null;

            callback = (loader) =>
            {
                completeCallback?.Invoke(bundleName);
                bundleLoader.UnSubscribe(callback);
            };

            bundleLoader.Subscribe(callback);
            m_bundleLoading.Add(bundleName, bundleLoader);
            bundleLoader.BeginLoad();
        }