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); }
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); }
protected override void OnInit() { request = Bundles.LoadAsync(Assets.GetBundleName(assetPath)); }
protected override void OnInit() { request = Bundles.Load(Assets.GetBundleName(assetPath)); asset = request.LoadAsset(Assets.GetAssetName(assetPath), assetType); }
// 检查并下载网络资源 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(); } }