예제 #1
0
        public static AssetBundleWarehouse CreateWarehouse(AssetBundleWarehouseAddr addr, bool isLow)
        {
            AssetBundleWarehouse ret = null;

            switch (addr.Pattern)
            {
            case AssetBundleLoadingPattern.Simulation:
                ret = new SimulationWarehouse(addr, isLow);
                break;

            case AssetBundleLoadingPattern.AsyncLocal:
                ret = new AsyncLocalWarehouse(addr, isLow);
                break;

            case AssetBundleLoadingPattern.AsyncWeb:
                ret = new AsyncWebWarehouse(addr, isLow);
                break;

            case AssetBundleLoadingPattern.Sync:
                ret = new SyncWarehouse(addr, isLow);
                break;

            case AssetBundleLoadingPattern.EndOfTheWorld:
                throw new ArgumentException("AssetBundleLoadingPattern.EndOfTheWorld");
            }

            return(ret);
        }
예제 #2
0
        //For Test Purpose.
        public IEnumerator InitWarehouse(AssetBundleWarehouseAddr defaultWarehouseAddr,
                                         List <SupplementaryWarehouse> supplementaryWarehouses = null, bool isLow = false, string useMD5 = null)
        {
            if (!_isWareHouseConfig)
            {
                _bundlePool.SetDefaultWarehouse(defaultWarehouseAddr);
                if (supplementaryWarehouses != null)
                {
                    foreach (var supplementaryWarehouse in supplementaryWarehouses)
                    {
                        _bundlePool.SetSupplementaryWarehouse(supplementaryWarehouse.WarehouseAddr,
                                                              supplementaryWarehouse.Bundles);
                    }
                }

                yield return(_bundlePool.Init(isLow, useMD5));

                _isWareHouseConfig = true;
                //yield return _bundlePool.Init(/*"Low"*/SettingManager.SettingManager.GetInstance().GetQualityBeforeInit().ToString());

                _isInitialized = true;
            }
            else
            {
                _logger.WarnFormat("The warehouse for asset loader has been configured!");
            }
        }
예제 #3
0
        public void SetSupplementaryWarehouse(AssetBundleWarehouseAddr addr, string[] bundles)
        {
            if (addr == null || bundles == null)
            {
                throw new ArgumentNullException();
            }

            if (addr.Pattern == AssetBundleLoadingPattern.EndOfTheWorld ||
                addr.Pattern != AssetBundleLoadingPattern.Simulation && string.IsNullOrEmpty(addr.Path))
            {
                throw new ArgumentException(addr.ToString());
            }

            if (bundles.Length == 0)
            {
                throw new ArgumentException("bundles.Length equals zero");
            }

            for (var i = 0; i < bundles.Length; i++)
            {
                if (_supplementaryBundles.Contains(bundles[i]))
                {
                    throw new ArgumentException("duplicate supplementary bundle: " + bundles[i]);
                }

                _supplementaryBundles.Add(bundles[i]);
            }

            if (string.IsNullOrEmpty(addr.Manifest))
            {
                addr.Manifest = Utility.GetPlatformName();
            }

            addr.Path = Utility.ProcessAssetBundleBasePath(addr.Path);

            if (!_supplementaryWarehouseAddr.ContainsKey(addr))
            {
                _supplementaryWarehouseAddr.Add(addr, new List <string>());
            }

            _supplementaryWarehouseAddr[addr].AddRange(bundles);
        }
예제 #4
0
        private IEnumerator Init(ResourceConfig config, bool isLow, string useMD5 = null)
        {
            var defaultWarehouseAddr = new AssetBundleWarehouseAddr()
            {
                Path     = config.BaseUrl,
                Pattern  = config.BasePattern,
                Manifest = config.Manifests,
            };

            var supplementaryWarehouses = new List <SupplementaryWarehouse>();
            var supplements             = config.Supplement;

            if (supplements != null)
            {
                foreach (var supplement in supplements)
                {
#if !UNITY_EDITOR
                    if (supplement.Pattern == AssetBundleLoadingPattern.Simulation)
                    {
                        continue;
                    }
#endif
                    if (supplement.BundleName != null && supplement.Pattern != null)
                    {
                        supplementaryWarehouses.Add(new SupplementaryWarehouse()
                        {
                            WarehouseAddr = new AssetBundleWarehouseAddr()
                            {
                                Path     = supplement.Url,
                                Pattern  = supplement.Pattern,
                                Manifest = supplement.Manifests
                            },
                            Bundles = new string[] { supplement.BundleName },
                        });
                    }
                }
            }


            yield return(InitWarehouse(defaultWarehouseAddr, supplementaryWarehouses, isLow, useMD5));
        }
예제 #5
0
        public void SetDefaultWarehouse(AssetBundleWarehouseAddr addr)
        {
            if (addr == null)
            {
                throw new ArgumentNullException();
            }

            if (addr.Pattern == AssetBundleLoadingPattern.EndOfTheWorld ||
                addr.Pattern != AssetBundleLoadingPattern.Simulation && string.IsNullOrEmpty(addr.Path))
            {
                throw new ArgumentException(addr.ToString());
            }

            if (string.IsNullOrEmpty(addr.Manifest))
            {
                addr.Manifest = Utility.GetPlatformName();
            }

            addr.Path = Utility.ProcessAssetBundleBasePath(addr.Path);

            _defaultWarehouseAddr = addr;
        }