Exemplo n.º 1
0
        IEnumerator DownloadAndCacheAsBinary(string assetBundleName, IProgress <float> progress)
        {
            var url      = assetBundleUrl + assetBundleName;
            var getBytes = WebRequestProcedure.GetAndGetBytes(url, headers, progress).ToYieldInstruction();

            yield return(getBytes);

            var hash = Manifest.GetAssetBundleHash(assetBundleName);

            AssetBundleCache.Save(assetBundleName, hash, getBytes.Result);
        }
Exemplo n.º 2
0
        IEnumerator DownloadAndCacheAllDependenciesAsBinary(string assetBundleName, IProgress <float> downloadProgress)
        {
            var dependencies    = Manifest.GetAllDependencies(assetBundleName);
            var allAssetBundles = dependencies.Concat(new[] { assetBundleName });
            var needDownloads   = allAssetBundles.Where(ab => !AssetBundleCache.IsCached(ab, Manifest.GetAssetBundleHash(ab))).ToArray();

            var abdProgress = new AssetBundleDownloadProgress(downloadProgress, needDownloads.Length);

            foreach (var ab in needDownloads)
            {
                yield return(DownloadAndCacheAsBinary(ab, abdProgress).ToYieldInstruction());

                abdProgress.Next();
            }
            abdProgress.Complete();
        }
Exemplo n.º 3
0
        IEnumerator LoadDependencies(string assetBundleName)
        {
            var dependencies = Manifest.GetDirectDependencies(assetBundleName);

            foreach (var dependency in dependencies)
            {
                var download = LoadDependencies(dependency).ToYieldInstruction();
                yield return(download);
            }

            LoadedAssetBundle loadedAssetBundle;

            if (loadedAssetBundleMap.TryGetValue(assetBundleName, out loadedAssetBundle))
            {
                loadedAssetBundle.RefCount += 1;
                yield break;
            }

            var loading = AssetBundleCache.Load(assetBundleName).ToYieldInstruction();

            yield return(loading);

            loadedAssetBundleMap.Add(assetBundleName, new LoadedAssetBundle(loading.Result));
        }