Пример #1
0
        public void Load(AssetLoadInfo[] assets, Loader[] customLoaders, Action <float> updateProgress, Action completed)
        {
            loaders.Clear();

            if (assets == null || assets.Length == 0)
            {
                List <string> bundles = new List <string> ();
                for (int i = 0, I = assets.Length; i < I; i++)
                {
                    var bundleName      = Assets.GetBundleName(assets [i].path);
                    var allDependencies = Bundles.GetAllDependencies(bundleName);
                    for (int j = 0, J = allDependencies.Length; j < J; j++)
                    {
                        var item = allDependencies [j];
                        if (!bundles.Contains(item))
                        {
                            bundles.Add(item);
                        }
                    }
                }
                loaders.AddRange(Array.ConvertAll <string, BundleLoader> (bundles.ToArray(), input => {
                    return(new BundleLoader()
                    {
                        bundleName = input
                    });
                }));
                bundles.Clear();
                bundles = null;

                loaders.AddRange(Array.ConvertAll <AssetLoadInfo, AssetLoader> (assets, delegate(AssetLoadInfo input) {
                    return(new AssetLoader()
                    {
                        assetPath = input.path,
                        assetType = input.type,
                        onLoad = OnLoad,
                        onUnload = OnUnload,
                    });
                }));
            }

            if (customLoaders != null && customLoaders.Length > 0)
            {
                loaders.AddRange(customLoaders);
            }

            progress = 0;

            onCompleted      = completed;
            onUpdateProgress = updateProgress;

            Cache(kCurrentCacheName);
        }
Пример #2
0
 protected override void OnLoad()
 {
     request = Bundles.Load(Assets.GetBundleName(assetPath));
     if (Assets.IsTjFrame)
     {
         asset = request.LoadAsset(assetPath, assetType);
     }
     else
     {
         asset = request.LoadAsset(Assets.GetAssetName(assetPath), assetType);
     }
     //   asset = request.LoadAsset(Assets.GetAssetName(assetPath), assetType);
 }
Пример #3
0
 protected override void OnInit()
 {
     request = Bundles.LoadAsync(Assets.GetBundleName(assetPath));
 }
Пример #4
0
 protected override void OnInit()
 {
     request = Bundles.Load(Assets.GetBundleName(assetPath));
     asset   = request.LoadAsset(Assets.GetAssetName(assetPath), assetType);
 }
Пример #5
0
        // 检查并下载网络资源
        public void CheckAndDownloadResource(List <string> assetPath, DownloadManager.DownloadFinishDelegate downloadAllOverCallBack)
        {
#if UNITY_EDITOR
            if (!Settings.ActiveBundleMode)
            {
                OnAllDownloadOver();
                if (downloadAllOverCallBack != null)
                {
                    downloadAllOverCallBack();
                }
                return;
            }
#endif
            if (downlodingCount != 0)
            {
                Debug.LogError("已经有下载队列");
                return;
            }
            // 检查所有
            HashSet <string> toDownload = new HashSet <string> ();
            foreach (string _path in assetPath)
            {
                Debug.Log("_path:" +
                          _path);
                string           realPath               = Assets.GetBundleName(_path);
                var              allDependencies        = Bundles.GetAllDependencies(realPath);
                HashSet <string> pathIncludeDependences = new HashSet <string> ();
                pathIncludeDependences.Add(realPath);
                foreach (string dependence in allDependencies)
                {
                    pathIncludeDependences.Add(dependence);
                }
                foreach (string __path in pathIncludeDependences)
                {
                    int _fileStatus;
                    if (!filesStatus.TryGetValue(__path, out _fileStatus))
                    {
                        filesStatus.Add(__path, FILE_STATUS_UNKOWN);
                        toDownload.Add(__path);
                    }
                    else if (_fileStatus == FILE_STATUS_UNKOWN || _fileStatus == FILE_NOT_EXIST)
                    {
                        toDownload.Add(__path);
                    }
                }
            }
            if (toDownload.Count == 0)
            {
                OnAllDownloadOver();
                if (downloadAllOverCallBack != null)
                {
                    downloadAllOverCallBack();
                }
            }
            else
            {
                DownloadManager dm = DownloadManager.instance;
                dm.OnError  += OnDownloadErr;
                dm.OnFinish += OnAllDownloadOver;
                if (downloadAllOverCallBack != null)
                {
                    curDownloadAllOverCallback = downloadAllOverCallBack;
                    dm.OnFinish += curDownloadAllOverCallback;
                }
                foreach (string realPath in toDownload)
                {
                    string _path = Path.Combine(resUrlRoot, realPath);
                    Debug.Log("下载文件:" + _path);
                    dm.Push(new DownloadManager.Request(_path, OnFileDownloadOver, realPath));
                }
                dm.Excute();
            }
        }