Пример #1
0
        private void PrepareAssetBundlesRequest(Entity request, HashSet <AssetBundleInfo> bundleInfos)
        {
            request.AddComponent(new AssetGroupComponent(request));
            request.AddComponent <ResourceLoadStatComponent>();
            AssetBundlesLoadDataComponent component = new AssetBundlesLoadDataComponent {
                AllBundles     = bundleInfos,
                BundlesToLoad  = new List <AssetBundleInfo>(bundleInfos),
                LoadingBundles = new HashSet <AssetBundleInfo>(),
                LoadedBundles  = new Dictionary <AssetBundleInfo, AssetBundle>()
            };

            request.AddComponent(component);
        }
Пример #2
0
        private AssetBundleInfo SelectDependBundleToLoad(BundlesRequestNode bundlesRequest)
        {
            AssetBundlesLoadDataComponent assetBundlesLoadData = bundlesRequest.assetBundlesLoadData;
            AssetBundleInfo        info = null;
            List <AssetBundleInfo> list = new List <AssetBundleInfo>();

            for (int i = 0; i < assetBundlesLoadData.BundlesToLoad.Count; i++)
            {
                AssetBundleInfo info2 = assetBundlesLoadData.BundlesToLoad[i];
                if (AssetBundlesStorage.IsStored(info2))
                {
                    list.Add(info2);
                }
                else if (!AssetBundlesStorage.IsLoading(info2))
                {
                    if (i < (assetBundlesLoadData.BundlesToLoad.Count - 1))
                    {
                        assetBundlesLoadData.BundlesToLoad.Remove(info2);
                        assetBundlesLoadData.LoadingBundles.Add(info2);
                        info = info2;
                    }
                    else if ((assetBundlesLoadData.BundlesToLoad.Count == 1) && (assetBundlesLoadData.LoadingBundles.Count == 0))
                    {
                        assetBundlesLoadData.BundlesToLoad.Remove(info2);
                        assetBundlesLoadData.LoadingBundles.Add(info2);
                        info = info2;
                    }
                    break;
                }
            }
            foreach (AssetBundleInfo info3 in list)
            {
                assetBundlesLoadData.BundlesToLoad.Remove(info3);
                Dictionary <AssetBundleInfo, AssetBundle> loadedBundles = assetBundlesLoadData.LoadedBundles;
                if (!loadedBundles.ContainsKey(info3))
                {
                    loadedBundles.Add(info3, AssetBundlesStorage.Get(info3));
                }
            }
            return(info);
        }
Пример #3
0
        private static AsyncLoadAssetFromBundleRequest CreateLoadAssetRequest(AssetReference assetReference, AssetBundleDatabaseComponent db, AssetBundlesLoadDataComponent assetBundlesLoadData)
        {
            AsyncLoadAssetFromBundleRequest request;
            AssetInfo assetInfo = db.AssetBundleDatabase.GetAssetInfo(assetReference.AssetGuid);

            try
            {
                request = new AsyncLoadAssetFromBundleRequest(assetBundlesLoadData.LoadedBundles[assetInfo.AssetBundleInfo], assetInfo.ObjectName, assetInfo.AssetType);
            }
            catch (KeyNotFoundException exception)
            {
                throw new Exception("Bundle not found in LoadedBundles: " + assetInfo.AssetBundleInfo.BundleName + ", ref=" + assetReference.AssetGuid, exception);
            }
            return(request);
        }