From 33ad0713fe676f723509aacc5488d2f162b2f325 Mon Sep 17 00:00:00 2001 From: hevinci Date: Mon, 7 Mar 2022 21:20:58 +0800 Subject: [PATCH] Update YooAssets --- .../Runtime/AssetSystem/AssetSystem.cs | 12 ++--- .../{AssetBundleInfo.cs => BundleInfo.cs} | 10 ++--- ...tBundleInfo.cs.meta => BundleInfo.cs.meta} | 0 .../Runtime/AssetSystem/IBundleServices.cs | 4 +- .../Runtime/AssetSystem/IDecryptServices.cs | 4 +- .../AssetSystem/Loader/BundleFileLoader.cs | 42 +++++++++--------- .../AssetSystem/Loader/DependBundleGrouper.cs | 8 ++-- .../Provider/BundledAssetProvider.cs | 2 +- .../AssetSystem/Provider/BundledProvider.cs | 8 ++-- .../Provider/BundledSubAssetsProvider.cs | 2 +- Assets/YooAsset/Runtime/Logger/DebugSummy.cs | 12 ++--- .../PatchSystem/Download/DownloadSystem.cs | 4 +- .../PatchSystem/Download/FileDownloader.cs | 30 ++++++++----- .../PatchSystem/Download/HttpDownloader.cs | 28 ++++++++---- .../Operations/DownloaderOperation.cs | 8 ++-- .../Runtime/PatchSystem/PatchManifest.cs | 2 +- .../PlayMode/EditorPlayModeImpl.cs | 8 ++-- .../PatchSystem/PlayMode/HostPlayModeImpl.cs | 44 +++++++++---------- .../PlayMode/OfflinePlayModeImpl.cs | 12 ++--- Assets/YooAsset/Runtime/YooAssets.cs | 18 ++++---- 20 files changed, 139 insertions(+), 119 deletions(-) rename Assets/YooAsset/Runtime/AssetSystem/{AssetBundleInfo.cs => BundleInfo.cs} (88%) rename Assets/YooAsset/Runtime/AssetSystem/{AssetBundleInfo.cs.meta => BundleInfo.cs.meta} (100%) diff --git a/Assets/YooAsset/Runtime/AssetSystem/AssetSystem.cs b/Assets/YooAsset/Runtime/AssetSystem/AssetSystem.cs index 28ffb95..f078135 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/AssetSystem.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/AssetSystem.cs @@ -227,8 +227,8 @@ namespace YooAsset internal static BundleFileLoader CreateOwnerBundleLoader(string assetPath) { - string bundleName = BundleServices.GetAssetBundleName(assetPath); - AssetBundleInfo bundleInfo = BundleServices.GetAssetBundleInfo(bundleName); + string bundleName = BundleServices.GetBundleName(assetPath); + BundleInfo bundleInfo = BundleServices.GetBundleInfo(bundleName); return CreateBundleFileLoaderInternal(bundleInfo); } internal static List CreateDependBundleLoaders(string assetPath) @@ -239,7 +239,7 @@ namespace YooAsset { foreach (var dependBundleName in depends) { - AssetBundleInfo dependBundleInfo = BundleServices.GetAssetBundleInfo(dependBundleName); + BundleInfo dependBundleInfo = BundleServices.GetBundleInfo(dependBundleName); BundleFileLoader dependLoader = CreateBundleFileLoaderInternal(dependBundleInfo); result.Add(dependLoader); } @@ -254,7 +254,7 @@ namespace YooAsset } } - private static BundleFileLoader CreateBundleFileLoaderInternal(AssetBundleInfo bundleInfo) + private static BundleFileLoader CreateBundleFileLoaderInternal(BundleInfo bundleInfo) { // 如果加载器已经存在 BundleFileLoader loader = TryGetBundleFileLoader(bundleInfo.BundleName); @@ -272,7 +272,7 @@ namespace YooAsset for (int i = 0; i < _loaders.Count; i++) { BundleFileLoader temp = _loaders[i]; - if (temp.BundleInfo.BundleName.Equals(bundleName)) + if (temp.BundleFileInfo.BundleName.Equals(bundleName)) { loader = temp; break; @@ -304,7 +304,7 @@ namespace YooAsset foreach (var provider in _providers) { - DebugSummy.ProviderInfo providerInfo = new DebugSummy.ProviderInfo(); + DebugSummy.DebugProviderInfo providerInfo = new DebugSummy.DebugProviderInfo(); providerInfo.AssetPath = provider.AssetPath; providerInfo.RefCount = provider.RefCount; providerInfo.States = provider.States; diff --git a/Assets/YooAsset/Runtime/AssetSystem/AssetBundleInfo.cs b/Assets/YooAsset/Runtime/AssetSystem/BundleInfo.cs similarity index 88% rename from Assets/YooAsset/Runtime/AssetSystem/AssetBundleInfo.cs rename to Assets/YooAsset/Runtime/AssetSystem/BundleInfo.cs index fcebb35..7b56592 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/AssetBundleInfo.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/BundleInfo.cs @@ -1,7 +1,7 @@  namespace YooAsset { - public class AssetBundleInfo + public class BundleInfo { private readonly PatchBundle _patchBundle; @@ -110,10 +110,10 @@ namespace YooAsset } - private AssetBundleInfo() + private BundleInfo() { } - internal AssetBundleInfo(PatchBundle patchBundle, string localPath, string mainURL, string fallbackURL) + internal BundleInfo(PatchBundle patchBundle, string localPath, string mainURL, string fallbackURL) { _patchBundle = patchBundle; BundleName = patchBundle.BundleName; @@ -121,7 +121,7 @@ namespace YooAsset RemoteMainURL = mainURL; RemoteFallbackURL = fallbackURL; } - internal AssetBundleInfo(PatchBundle patchBundle, string localPath) + internal BundleInfo(PatchBundle patchBundle, string localPath) { _patchBundle = patchBundle; BundleName = patchBundle.BundleName; @@ -129,7 +129,7 @@ namespace YooAsset RemoteMainURL = string.Empty; RemoteFallbackURL = string.Empty; } - internal AssetBundleInfo(string bundleName, string localPath) + internal BundleInfo(string bundleName, string localPath) { _patchBundle = null; BundleName = bundleName; diff --git a/Assets/YooAsset/Runtime/AssetSystem/AssetBundleInfo.cs.meta b/Assets/YooAsset/Runtime/AssetSystem/BundleInfo.cs.meta similarity index 100% rename from Assets/YooAsset/Runtime/AssetSystem/AssetBundleInfo.cs.meta rename to Assets/YooAsset/Runtime/AssetSystem/BundleInfo.cs.meta diff --git a/Assets/YooAsset/Runtime/AssetSystem/IBundleServices.cs b/Assets/YooAsset/Runtime/AssetSystem/IBundleServices.cs index 06a5b2d..ed1e26f 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/IBundleServices.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/IBundleServices.cs @@ -6,12 +6,12 @@ namespace YooAsset /// /// 获取AssetBundle的信息 /// - AssetBundleInfo GetAssetBundleInfo(string bundleName); + BundleInfo GetBundleInfo(string bundleName); /// /// 获取资源所属的资源包名称 /// - string GetAssetBundleName(string assetPath); + string GetBundleName(string assetPath); /// /// 获取资源依赖的所有AssetBundle列表 diff --git a/Assets/YooAsset/Runtime/AssetSystem/IDecryptServices.cs b/Assets/YooAsset/Runtime/AssetSystem/IDecryptServices.cs index 3e2b453..4cca90d 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/IDecryptServices.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/IDecryptServices.cs @@ -8,11 +8,11 @@ namespace YooAsset /// /// 获取解密的数据偏移 /// - ulong GetDecryptOffset(AssetBundleInfo bundleInfo); + ulong GetDecryptOffset(BundleInfo bundleInfo); /// /// 获取解密的字节数据 /// - byte[] GetDecryptBinary(AssetBundleInfo bundleInfo); + byte[] GetDecryptBinary(BundleInfo bundleInfo); } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/AssetSystem/Loader/BundleFileLoader.cs b/Assets/YooAsset/Runtime/AssetSystem/Loader/BundleFileLoader.cs index 96288ce..c7cb2bc 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/Loader/BundleFileLoader.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/Loader/BundleFileLoader.cs @@ -8,9 +8,9 @@ namespace YooAsset internal class BundleFileLoader { /// - /// 资源文件信息 + /// 资源包文件信息 /// - public AssetBundleInfo BundleInfo { private set; get; } + public BundleInfo BundleFileInfo { private set; get; } /// /// 引用计数 @@ -35,9 +35,9 @@ namespace YooAsset internal AssetBundle CacheBundle { private set; get; } - public BundleFileLoader(AssetBundleInfo bundleInfo) + public BundleFileLoader(BundleInfo bundleInfo) { - BundleInfo = bundleInfo; + BundleFileInfo = bundleInfo; RefCount = 0; States = ELoaderStates.None; } @@ -92,13 +92,13 @@ namespace YooAsset if (States == ELoaderStates.None) { // 检测加载地址是否为空 - if (string.IsNullOrEmpty(BundleInfo.LocalPath)) + if (string.IsNullOrEmpty(BundleFileInfo.LocalPath)) { States = ELoaderStates.Fail; return; } - if (string.IsNullOrEmpty(BundleInfo.RemoteMainURL)) + if (string.IsNullOrEmpty(BundleFileInfo.RemoteMainURL)) States = ELoaderStates.LoadFile; else States = ELoaderStates.Download; @@ -108,7 +108,7 @@ namespace YooAsset if (States == ELoaderStates.Download) { int failedTryAgain = int.MaxValue; - _fileDownloader = DownloadSystem.BeginDownload(BundleInfo, failedTryAgain); + _fileDownloader = DownloadSystem.BeginDownload(BundleFileInfo, failedTryAgain); States = ELoaderStates.CheckDownload; } @@ -134,32 +134,32 @@ namespace YooAsset { #if UNITY_EDITOR // 注意:Unity2017.4编辑器模式下,如果AssetBundle文件不存在会导致编辑器崩溃,这里做了预判。 - if (System.IO.File.Exists(BundleInfo.LocalPath) == false) + if (System.IO.File.Exists(BundleFileInfo.LocalPath) == false) { - Logger.Warning($"Not found assetBundle file : {BundleInfo.LocalPath}"); + Logger.Warning($"Not found assetBundle file : {BundleFileInfo.LocalPath}"); States = ELoaderStates.Fail; return; } #endif // Load assetBundle file - if (BundleInfo.IsEncrypted) + if (BundleFileInfo.IsEncrypted) { if (AssetSystem.DecryptServices == null) - throw new Exception($"{nameof(BundleFileLoader)} need IDecryptServices : {BundleInfo.BundleName}"); + throw new Exception($"{nameof(BundleFileLoader)} need IDecryptServices : {BundleFileInfo.BundleName}"); EDecryptMethod decryptType = AssetSystem.DecryptServices.DecryptType; if (decryptType == EDecryptMethod.GetDecryptOffset) { - ulong offset = AssetSystem.DecryptServices.GetDecryptOffset(BundleInfo); + ulong offset = AssetSystem.DecryptServices.GetDecryptOffset(BundleFileInfo); if (_isWaitForAsyncComplete) - CacheBundle = AssetBundle.LoadFromFile(BundleInfo.LocalPath, 0, offset); + CacheBundle = AssetBundle.LoadFromFile(BundleFileInfo.LocalPath, 0, offset); else - _cacheRequest = AssetBundle.LoadFromFileAsync(BundleInfo.LocalPath, 0, offset); + _cacheRequest = AssetBundle.LoadFromFileAsync(BundleFileInfo.LocalPath, 0, offset); } else if (decryptType == EDecryptMethod.GetDecryptBinary) { - byte[] binary = AssetSystem.DecryptServices.GetDecryptBinary(BundleInfo); + byte[] binary = AssetSystem.DecryptServices.GetDecryptBinary(BundleFileInfo); if (_isWaitForAsyncComplete) CacheBundle = AssetBundle.LoadFromMemory(binary); else @@ -173,9 +173,9 @@ namespace YooAsset else { if (_isWaitForAsyncComplete) - CacheBundle = AssetBundle.LoadFromFile(BundleInfo.LocalPath); + CacheBundle = AssetBundle.LoadFromFile(BundleFileInfo.LocalPath); else - _cacheRequest = AssetBundle.LoadFromFileAsync(BundleInfo.LocalPath); + _cacheRequest = AssetBundle.LoadFromFileAsync(BundleFileInfo.LocalPath); } States = ELoaderStates.CheckFile; } @@ -202,7 +202,7 @@ namespace YooAsset // Check error if (CacheBundle == null) { - Logger.Error($"Failed to load assetBundle file : {BundleInfo.BundleName}"); + Logger.Error($"Failed to load assetBundle file : {BundleFileInfo.BundleName}"); States = ELoaderStates.Fail; } else @@ -223,9 +223,9 @@ namespace YooAsset if (forceDestroy == false) { if (RefCount > 0) - throw new Exception($"Bundle file loader ref is not zero : {BundleInfo.BundleName}"); + throw new Exception($"Bundle file loader ref is not zero : {BundleFileInfo.BundleName}"); if (IsDone() == false) - throw new Exception($"Bundle file loader is not done : {BundleInfo.BundleName}"); + throw new Exception($"Bundle file loader is not done : {BundleFileInfo.BundleName}"); } if (CacheBundle != null) @@ -302,7 +302,7 @@ namespace YooAsset if (_isShowWaitForAsyncError == false) { _isShowWaitForAsyncError = true; - Logger.Error($"WaitForAsyncComplete failed ! BundleName : {BundleInfo.BundleName} States : {States}"); + Logger.Error($"WaitForAsyncComplete failed ! BundleName : {BundleFileInfo.BundleName} States : {States}"); } break; } diff --git a/Assets/YooAsset/Runtime/AssetSystem/Loader/DependBundleGrouper.cs b/Assets/YooAsset/Runtime/AssetSystem/Loader/DependBundleGrouper.cs index 0dcaf63..3d1d1c8 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/Loader/DependBundleGrouper.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/Loader/DependBundleGrouper.cs @@ -66,13 +66,13 @@ namespace YooAsset /// /// 获取资源包的调试信息列表 /// - internal void GetBundleDebugInfos(List output) + internal void GetBundleDebugInfos(List output) { foreach (var loader in _dependBundles) { - var debugInfo = new DebugSummy.BundleInfo(); - debugInfo.BundleName = loader.BundleInfo.BundleName; - debugInfo.Version = loader.BundleInfo.Version; + var debugInfo = new DebugSummy.DebugBundleInfo(); + debugInfo.BundleName = loader.BundleFileInfo.BundleName; + debugInfo.Version = loader.BundleFileInfo.Version; debugInfo.RefCount = loader.RefCount; debugInfo.States = loader.States; output.Add(debugInfo); diff --git a/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledAssetProvider.cs b/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledAssetProvider.cs index a645d80..c0c2159 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledAssetProvider.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledAssetProvider.cs @@ -97,7 +97,7 @@ namespace YooAsset States = AssetObject == null ? EAssetStates.Fail : EAssetStates.Success; if (States == EAssetStates.Fail) - Logger.Warning($"Failed to load asset : {AssetName} from bundle : {OwnerBundle.BundleInfo.BundleName}"); + Logger.Warning($"Failed to load asset : {AssetName} from bundle : {OwnerBundle.BundleFileInfo.BundleName}"); InvokeCompletion(); } } diff --git a/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledProvider.cs b/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledProvider.cs index 9747f36..31137ae 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledProvider.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledProvider.cs @@ -36,11 +36,11 @@ namespace YooAsset /// /// 获取资源包的调试信息列表 /// - internal void GetBundleDebugInfos(List output) + internal void GetBundleDebugInfos(List output) { - var ownerInfo = new DebugSummy.BundleInfo(); - ownerInfo.BundleName = OwnerBundle.BundleInfo.BundleName; - ownerInfo.Version = OwnerBundle.BundleInfo.Version; + var ownerInfo = new DebugSummy.DebugBundleInfo(); + ownerInfo.BundleName = OwnerBundle.BundleFileInfo.BundleName; + ownerInfo.Version = OwnerBundle.BundleFileInfo.Version; ownerInfo.RefCount = OwnerBundle.RefCount; ownerInfo.States = OwnerBundle.States; output.Add(ownerInfo); diff --git a/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledSubAssetsProvider.cs b/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledSubAssetsProvider.cs index e486c0d..e36ef59 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledSubAssetsProvider.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledSubAssetsProvider.cs @@ -97,7 +97,7 @@ namespace YooAsset States = AllAssets == null ? EAssetStates.Fail : EAssetStates.Success; if (States == EAssetStates.Fail) - Logger.Warning($"Failed to load sub assets : {AssetName} from bundle : {OwnerBundle.BundleInfo.BundleName}"); + Logger.Warning($"Failed to load sub assets : {AssetName} from bundle : {OwnerBundle.BundleFileInfo.BundleName}"); InvokeCompletion(); } } diff --git a/Assets/YooAsset/Runtime/Logger/DebugSummy.cs b/Assets/YooAsset/Runtime/Logger/DebugSummy.cs index f87e4af..6a47130 100644 --- a/Assets/YooAsset/Runtime/Logger/DebugSummy.cs +++ b/Assets/YooAsset/Runtime/Logger/DebugSummy.cs @@ -9,7 +9,7 @@ namespace YooAsset /// /// 资源包调试信息 /// - public class BundleInfo + public class DebugBundleInfo { /// /// 资源包名称 @@ -35,7 +35,7 @@ namespace YooAsset /// /// 资源加载对象调试信息 /// - public class ProviderInfo : IComparer, IComparable + public class DebugProviderInfo : IComparer, IComparable { /// /// 资源对象路径 @@ -55,20 +55,20 @@ namespace YooAsset /// /// 依赖的资源包列表 /// - public readonly List BundleInfos = new List(); + public readonly List BundleInfos = new List(); - public int CompareTo(ProviderInfo other) + public int CompareTo(DebugProviderInfo other) { return Compare(this, other); } - public int Compare(ProviderInfo a, ProviderInfo b) + public int Compare(DebugProviderInfo a, DebugProviderInfo b) { return string.CompareOrdinal(a.AssetPath, b.AssetPath); } } - public readonly List ProviderInfos = new List(1000); + public readonly List ProviderInfos = new List(1000); public int BundleCount { set; get; } public int AssetCount { set; get; } diff --git a/Assets/YooAsset/Runtime/PatchSystem/Download/DownloadSystem.cs b/Assets/YooAsset/Runtime/PatchSystem/Download/DownloadSystem.cs index 1147f9a..867b07b 100644 --- a/Assets/YooAsset/Runtime/PatchSystem/Download/DownloadSystem.cs +++ b/Assets/YooAsset/Runtime/PatchSystem/Download/DownloadSystem.cs @@ -44,7 +44,7 @@ namespace YooAsset /// 开始下载资源文件 /// 注意:只有第一次请求的参数才是有效的 /// - public static FileDownloader BeginDownload(AssetBundleInfo bundleInfo, int failedTryAgain, int timeout = 60) + public static FileDownloader BeginDownload(BundleInfo bundleInfo, int failedTryAgain, int timeout = 60) { // 查询存在的下载器 if (_downloaderDic.TryGetValue(bundleInfo.Hash, out var downloader)) @@ -119,7 +119,7 @@ namespace YooAsset } // 验证文件完整性 - public static bool CheckContentIntegrity(AssetBundleInfo bundleInfo) + public static bool CheckContentIntegrity(BundleInfo bundleInfo) { return CheckContentIntegrity(bundleInfo.LocalPath, bundleInfo.SizeBytes, bundleInfo.CRC); } diff --git a/Assets/YooAsset/Runtime/PatchSystem/Download/FileDownloader.cs b/Assets/YooAsset/Runtime/PatchSystem/Download/FileDownloader.cs index 8cb2f22..885a92e 100644 --- a/Assets/YooAsset/Runtime/PatchSystem/Download/FileDownloader.cs +++ b/Assets/YooAsset/Runtime/PatchSystem/Download/FileDownloader.cs @@ -19,7 +19,7 @@ namespace YooAsset Failed, } - public AssetBundleInfo BundleInfo { private set; get; } + private readonly BundleInfo _bundleInfo; private UnityWebRequest _webRequest; private UnityWebRequestAsyncOperation _operationHandle; @@ -48,13 +48,13 @@ namespace YooAsset public ulong DownloadedBytes { private set; get; } - internal FileDownloader(AssetBundleInfo bundleInfo) + internal FileDownloader(BundleInfo bundleInfo) { - BundleInfo = bundleInfo; + _bundleInfo = bundleInfo; } internal void SendRequest(int failedTryAgain, int timeout) { - if (string.IsNullOrEmpty(BundleInfo.LocalPath)) + if (string.IsNullOrEmpty(_bundleInfo.LocalPath)) throw new ArgumentNullException(); if (_steps == ESteps.None) @@ -85,7 +85,7 @@ namespace YooAsset _requestCount++; _requestURL = GetRequestURL(); _webRequest = new UnityWebRequest(_requestURL, UnityWebRequest.kHttpVerbGET); - DownloadHandlerFile handler = new DownloadHandlerFile(BundleInfo.LocalPath); + DownloadHandlerFile handler = new DownloadHandlerFile(_bundleInfo.LocalPath); handler.removeFileOnAbort = true; _webRequest.downloadHandler = handler; _webRequest.disposeDownloadHandlerOnDispose = true; @@ -124,12 +124,12 @@ namespace YooAsset if (isError == false) { // 注意:如果文件验证失败需要删除文件 - if (DownloadSystem.CheckContentIntegrity(BundleInfo) == false) + if (DownloadSystem.CheckContentIntegrity(_bundleInfo) == false) { isError = true; _lastError = $"Verification failed"; - if (File.Exists(BundleInfo.LocalPath)) - File.Delete(BundleInfo.LocalPath); + if (File.Exists(_bundleInfo.LocalPath)) + File.Delete(_bundleInfo.LocalPath); } } @@ -144,7 +144,7 @@ namespace YooAsset else { _steps = ESteps.Succeed; - DownloadSystem.CacheVerifyFile(BundleInfo.Hash, BundleInfo.BundleName); + DownloadSystem.CacheVerifyFile(_bundleInfo.Hash, _bundleInfo.BundleName); } // 释放下载器 @@ -172,9 +172,9 @@ namespace YooAsset { // 轮流返回请求地址 if (_requestCount % 2 == 0) - return BundleInfo.RemoteFallbackURL; + return _bundleInfo.RemoteFallbackURL; else - return BundleInfo.RemoteMainURL; + return _bundleInfo.RemoteMainURL; } private void CheckTimeout() { @@ -206,6 +206,14 @@ namespace YooAsset } } + /// + /// 获取资源包信息 + /// + public BundleInfo GetBundleInfo() + { + return _bundleInfo; + } + /// /// 检测下载器是否已经完成(无论成功或失败) /// diff --git a/Assets/YooAsset/Runtime/PatchSystem/Download/HttpDownloader.cs b/Assets/YooAsset/Runtime/PatchSystem/Download/HttpDownloader.cs index 532b396..569a3df 100644 --- a/Assets/YooAsset/Runtime/PatchSystem/Download/HttpDownloader.cs +++ b/Assets/YooAsset/Runtime/PatchSystem/Download/HttpDownloader.cs @@ -19,7 +19,7 @@ namespace YooAsset Failed, } - public AssetBundleInfo BundleInfo { private set; get; } + private readonly BundleInfo _bundleInfo; private ESteps _steps = ESteps.None; // 线程 @@ -61,6 +61,10 @@ namespace YooAsset } + internal HttpDownloader(BundleInfo bundleInfo) + { + _bundleInfo = bundleInfo; + } internal void SendRequest(int failedTryAgain, int timeout) { _failedTryAgain = failedTryAgain; @@ -102,7 +106,7 @@ namespace YooAsset _downloadError = _threadError; if (_threadResult) { - DownloadSystem.CacheVerifyFile(BundleInfo.Hash, BundleInfo.BundleName); + DownloadSystem.CacheVerifyFile(_bundleInfo.Hash, _bundleInfo.BundleName); _steps = ESteps.Succeed; } else @@ -125,6 +129,14 @@ namespace YooAsset _steps = ESteps.Succeed; } + /// + /// 获取资源包信息 + /// + public BundleInfo GetBundleInfo() + { + return _bundleInfo; + } + /// /// 检测下载器是否已经完成(无论成功或失败) /// @@ -155,8 +167,8 @@ namespace YooAsset private void ThreadRun() { string url = GetRequestURL(); - string savePath = BundleInfo.LocalPath; - long fileTotalSize = BundleInfo.SizeBytes; + string savePath = _bundleInfo.LocalPath; + long fileTotalSize = _bundleInfo.SizeBytes; FileStream fileStream = null; Stream webStream = null; @@ -202,7 +214,7 @@ namespace YooAsset } // 验证下载文件完整性 - bool verfiyResult = DownloadSystem.CheckContentIntegrity(savePath, BundleInfo.SizeBytes, BundleInfo.CRC); + bool verfiyResult = DownloadSystem.CheckContentIntegrity(savePath, _bundleInfo.SizeBytes, _bundleInfo.CRC); if(verfiyResult) { _threadResult = true; @@ -210,7 +222,7 @@ namespace YooAsset else { _threadResult = false; - _threadError = $"Verify file content failed : {BundleInfo.Hash}"; + _threadError = $"Verify file content failed : {_bundleInfo.Hash}"; } } catch (Exception e) @@ -245,9 +257,9 @@ namespace YooAsset // 轮流返回请求地址 _requestCount++; if (_requestCount % 2 == 0) - return BundleInfo.RemoteFallbackURL; + return _bundleInfo.RemoteFallbackURL; else - return BundleInfo.RemoteMainURL; + return _bundleInfo.RemoteMainURL; } #endregion } diff --git a/Assets/YooAsset/Runtime/PatchSystem/Operations/DownloaderOperation.cs b/Assets/YooAsset/Runtime/PatchSystem/Operations/DownloaderOperation.cs index a3622de..c3b9831 100644 --- a/Assets/YooAsset/Runtime/PatchSystem/Operations/DownloaderOperation.cs +++ b/Assets/YooAsset/Runtime/PatchSystem/Operations/DownloaderOperation.cs @@ -20,8 +20,8 @@ namespace YooAsset private readonly int _fileLoadingMaxNumber; private readonly int _failedTryAgain; - private readonly List _downloadList; - private readonly List _loadFailedList = new List(); + private readonly List _downloadList; + private readonly List _loadFailedList = new List(); private readonly List _downloaders = new List(); private readonly List _removeList = new List(MAX_LOADER_COUNT); @@ -67,7 +67,7 @@ namespace YooAsset public OnDownloadFileFailed OnDownloadFileFailedCallback { set; get; } - internal DownloaderOperation(List downloadList, int fileLoadingMaxNumber, int failedTryAgain) + internal DownloaderOperation(List downloadList, int fileLoadingMaxNumber, int failedTryAgain) { _downloadList = downloadList; _fileLoadingMaxNumber = UnityEngine.Mathf.Clamp(fileLoadingMaxNumber, 1, MAX_LOADER_COUNT); ; @@ -100,7 +100,7 @@ namespace YooAsset if (downloader.IsDone() == false) continue; - AssetBundleInfo bundleInfo = downloader.BundleInfo; + BundleInfo bundleInfo = downloader.GetBundleInfo(); // 检测是否下载失败 if (downloader.HasError()) diff --git a/Assets/YooAsset/Runtime/PatchSystem/PatchManifest.cs b/Assets/YooAsset/Runtime/PatchSystem/PatchManifest.cs index 9a5060d..7815c48 100644 --- a/Assets/YooAsset/Runtime/PatchSystem/PatchManifest.cs +++ b/Assets/YooAsset/Runtime/PatchSystem/PatchManifest.cs @@ -87,7 +87,7 @@ namespace YooAsset /// /// 获取资源包名称 /// - public string GetAssetBundleName(string assetPath) + public string GetBundleName(string assetPath) { if (Assets.TryGetValue(assetPath, out PatchAsset patchAsset)) { diff --git a/Assets/YooAsset/Runtime/PatchSystem/PlayMode/EditorPlayModeImpl.cs b/Assets/YooAsset/Runtime/PatchSystem/PlayMode/EditorPlayModeImpl.cs index 59e663b..817c031 100644 --- a/Assets/YooAsset/Runtime/PatchSystem/PlayMode/EditorPlayModeImpl.cs +++ b/Assets/YooAsset/Runtime/PatchSystem/PlayMode/EditorPlayModeImpl.cs @@ -25,13 +25,13 @@ namespace YooAsset } #region IBundleServices接口 - AssetBundleInfo IBundleServices.GetAssetBundleInfo(string bundleName) + BundleInfo IBundleServices.GetBundleInfo(string bundleName) { - Logger.Warning($"Editor play mode can not get asset bundle info."); - AssetBundleInfo bundleInfo = new AssetBundleInfo(bundleName, bundleName); + Logger.Warning($"Editor play mode can not get bundle info."); + BundleInfo bundleInfo = new BundleInfo(bundleName, bundleName); return bundleInfo; } - string IBundleServices.GetAssetBundleName(string assetPath) + string IBundleServices.GetBundleName(string assetPath) { return assetPath; } diff --git a/Assets/YooAsset/Runtime/PatchSystem/PlayMode/HostPlayModeImpl.cs b/Assets/YooAsset/Runtime/PatchSystem/PlayMode/HostPlayModeImpl.cs index e2732fc..6890bf9 100644 --- a/Assets/YooAsset/Runtime/PatchSystem/PlayMode/HostPlayModeImpl.cs +++ b/Assets/YooAsset/Runtime/PatchSystem/PlayMode/HostPlayModeImpl.cs @@ -57,11 +57,11 @@ namespace YooAsset /// public DownloaderOperation CreateDownloaderByTags(string[] tags, int fileLoadingMaxNumber, int failedTryAgain) { - List downloadList = GetDownloadListByTags(tags); + List downloadList = GetDownloadListByTags(tags); var operation = new DownloaderOperation(downloadList, fileLoadingMaxNumber, failedTryAgain); return operation; } - private List GetDownloadListByTags(string[] tags) + private List GetDownloadListByTags(string[] tags) { List downloadList = new List(1000); foreach (var patchBundle in LocalPatchManifest.BundleList) @@ -103,17 +103,17 @@ namespace YooAsset /// public DownloaderOperation CreateDownloaderByPaths(List assetPaths, int fileLoadingMaxNumber, int failedTryAgain) { - List downloadList = GetDownloadListByPaths(assetPaths); + List downloadList = GetDownloadListByPaths(assetPaths); var operation = new DownloaderOperation(downloadList, fileLoadingMaxNumber, failedTryAgain); return operation; } - private List GetDownloadListByPaths(List assetPaths) + private List GetDownloadListByPaths(List assetPaths) { // 获取资源对象的资源包和所有依赖资源包 List checkList = new List(); foreach (var assetPath in assetPaths) { - string mainBundleName = LocalPatchManifest.GetAssetBundleName(assetPath); + string mainBundleName = LocalPatchManifest.GetBundleName(assetPath); if (string.IsNullOrEmpty(mainBundleName) == false) { if (LocalPatchManifest.Bundles.TryGetValue(mainBundleName, out PatchBundle mainBundle)) @@ -160,11 +160,11 @@ namespace YooAsset /// public DownloaderOperation CreateUnpackerByTags(string[] tags, int fileUpackingMaxNumber, int failedTryAgain) { - List unpcakList = GetUnpackListByTags(tags); + List unpcakList = GetUnpackListByTags(tags); var operation = new DownloaderOperation(unpcakList, fileUpackingMaxNumber, failedTryAgain); return operation; } - private List GetUnpackListByTags(string[] tags) + private List GetUnpackListByTags(string[] tags) { List downloadList = new List(1000); foreach (var patchBundle in AppPatchManifest.BundleList) @@ -213,18 +213,18 @@ namespace YooAsset } // 下载相关 - private AssetBundleInfo ConvertToDownloadInfo(PatchBundle patchBundle) + private BundleInfo ConvertToDownloadInfo(PatchBundle patchBundle) { // 注意:资源版本号只用于确定下载路径 string sandboxPath = PatchHelper.MakeSandboxCacheFilePath(patchBundle.Hash); string remoteMainURL = GetPatchDownloadMainURL(patchBundle.Version, patchBundle.Hash); string remoteFallbackURL = GetPatchDownloadFallbackURL(patchBundle.Version, patchBundle.Hash); - AssetBundleInfo bundleInfo = new AssetBundleInfo(patchBundle, sandboxPath, remoteMainURL, remoteFallbackURL); + BundleInfo bundleInfo = new BundleInfo(patchBundle, sandboxPath, remoteMainURL, remoteFallbackURL); return bundleInfo; } - private List ConvertToDownloadList(List downloadList) + private List ConvertToDownloadList(List downloadList) { - List result = new List(downloadList.Count); + List result = new List(downloadList.Count); foreach (var patchBundle in downloadList) { var bundleInfo = ConvertToDownloadInfo(patchBundle); @@ -234,16 +234,16 @@ namespace YooAsset } // 解压相关 - private AssetBundleInfo ConvertToUnpackInfo(PatchBundle patchBundle) + private BundleInfo ConvertToUnpackInfo(PatchBundle patchBundle) { string sandboxPath = PatchHelper.MakeSandboxCacheFilePath(patchBundle.Hash); string streamingLoadPath = AssetPathHelper.MakeStreamingLoadPath(patchBundle.Hash); - AssetBundleInfo bundleInfo = new AssetBundleInfo(patchBundle, sandboxPath, streamingLoadPath, streamingLoadPath); + BundleInfo bundleInfo = new BundleInfo(patchBundle, sandboxPath, streamingLoadPath, streamingLoadPath); return bundleInfo; } - private List ConvertToUnpackList(List unpackList) + private List ConvertToUnpackList(List unpackList) { - List result = new List(unpackList.Count); + List result = new List(unpackList.Count); foreach (var patchBundle in unpackList) { var bundleInfo = ConvertToUnpackInfo(patchBundle); @@ -253,10 +253,10 @@ namespace YooAsset } #region IBundleServices接口 - AssetBundleInfo IBundleServices.GetAssetBundleInfo(string bundleName) + BundleInfo IBundleServices.GetBundleInfo(string bundleName) { if (string.IsNullOrEmpty(bundleName)) - return new AssetBundleInfo(string.Empty, string.Empty); + return new BundleInfo(string.Empty, string.Empty); if (LocalPatchManifest.Bundles.TryGetValue(bundleName, out PatchBundle patchBundle)) { @@ -266,7 +266,7 @@ namespace YooAsset if (appPatchBundle.IsBuildin && appPatchBundle.Hash == patchBundle.Hash) { string appLoadPath = AssetPathHelper.MakeStreamingLoadPath(appPatchBundle.Hash); - AssetBundleInfo bundleInfo = new AssetBundleInfo(appPatchBundle, appLoadPath); + BundleInfo bundleInfo = new BundleInfo(appPatchBundle, appLoadPath); return bundleInfo; } } @@ -275,7 +275,7 @@ namespace YooAsset if (DownloadSystem.ContainsVerifyFile(patchBundle.Hash)) { string sandboxLoadPath = PatchHelper.MakeSandboxCacheFilePath(patchBundle.Hash); - AssetBundleInfo bundleInfo = new AssetBundleInfo(patchBundle, sandboxLoadPath); + BundleInfo bundleInfo = new BundleInfo(patchBundle, sandboxLoadPath); return bundleInfo; } @@ -285,13 +285,13 @@ namespace YooAsset else { Logger.Warning($"Not found bundle in patch manifest : {bundleName}"); - AssetBundleInfo bundleInfo = new AssetBundleInfo(bundleName, string.Empty); + BundleInfo bundleInfo = new BundleInfo(bundleName, string.Empty); return bundleInfo; } } - string IBundleServices.GetAssetBundleName(string assetPath) + string IBundleServices.GetBundleName(string assetPath) { - return LocalPatchManifest.GetAssetBundleName(assetPath); + return LocalPatchManifest.GetBundleName(assetPath); } string[] IBundleServices.GetAllDependencies(string assetPath) { diff --git a/Assets/YooAsset/Runtime/PatchSystem/PlayMode/OfflinePlayModeImpl.cs b/Assets/YooAsset/Runtime/PatchSystem/PlayMode/OfflinePlayModeImpl.cs index 1aa476a..44c2cb7 100644 --- a/Assets/YooAsset/Runtime/PatchSystem/PlayMode/OfflinePlayModeImpl.cs +++ b/Assets/YooAsset/Runtime/PatchSystem/PlayMode/OfflinePlayModeImpl.cs @@ -29,27 +29,27 @@ namespace YooAsset } #region IBundleServices接口 - AssetBundleInfo IBundleServices.GetAssetBundleInfo(string bundleName) + BundleInfo IBundleServices.GetBundleInfo(string bundleName) { if (string.IsNullOrEmpty(bundleName)) - return new AssetBundleInfo(string.Empty, string.Empty); + return new BundleInfo(string.Empty, string.Empty); if (AppPatchManifest.Bundles.TryGetValue(bundleName, out PatchBundle patchBundle)) { string localPath = AssetPathHelper.MakeStreamingLoadPath(patchBundle.Hash); - AssetBundleInfo bundleInfo = new AssetBundleInfo(patchBundle, localPath); + BundleInfo bundleInfo = new BundleInfo(patchBundle, localPath); return bundleInfo; } else { Logger.Warning($"Not found bundle in patch manifest : {bundleName}"); - AssetBundleInfo bundleInfo = new AssetBundleInfo(bundleName, string.Empty); + BundleInfo bundleInfo = new BundleInfo(bundleName, string.Empty); return bundleInfo; } } - string IBundleServices.GetAssetBundleName(string assetPath) + string IBundleServices.GetBundleName(string assetPath) { - return AppPatchManifest.GetAssetBundleName(assetPath); + return AppPatchManifest.GetBundleName(assetPath); } string[] IBundleServices.GetAllDependencies(string assetPath) { diff --git a/Assets/YooAsset/Runtime/YooAssets.cs b/Assets/YooAsset/Runtime/YooAssets.cs index 8c1c259..0690ee9 100644 --- a/Assets/YooAsset/Runtime/YooAssets.cs +++ b/Assets/YooAsset/Runtime/YooAssets.cs @@ -254,11 +254,11 @@ namespace YooAsset /// /// 获取资源包信息 /// - public static AssetBundleInfo GetAssetBundleInfo(string location) + public static BundleInfo GetBundleInfo(string location) { string assetPath = ConvertLocationToAssetPath(location); - string bundleName = _bundleServices.GetAssetBundleName(assetPath); - return _bundleServices.GetAssetBundleInfo(bundleName); + string bundleName = _bundleServices.GetBundleName(assetPath); + return _bundleServices.GetBundleInfo(bundleName); } /// @@ -393,13 +393,13 @@ namespace YooAsset { if (_playMode == EPlayMode.EditorPlayMode) { - List downloadList = new List(); + List downloadList = new List(); var operation = new DownloaderOperation(downloadList, downloadingMaxNumber, failedTryAgain); return operation; } else if (_playMode == EPlayMode.OfflinePlayMode) { - List downloadList = new List(); + List downloadList = new List(); var operation = new DownloaderOperation(downloadList, downloadingMaxNumber, failedTryAgain); return operation; } @@ -425,13 +425,13 @@ namespace YooAsset { if (_playMode == EPlayMode.EditorPlayMode) { - List downloadList = new List(); + List downloadList = new List(); var operation = new DownloaderOperation(downloadList, downloadingMaxNumber, failedTryAgain); return operation; } else if (_playMode == EPlayMode.OfflinePlayMode) { - List downloadList = new List(); + List downloadList = new List(); var operation = new DownloaderOperation(downloadList, downloadingMaxNumber, failedTryAgain); return operation; } @@ -477,13 +477,13 @@ namespace YooAsset { if (_playMode == EPlayMode.EditorPlayMode) { - List downloadList = new List(); + List downloadList = new List(); var operation = new DownloaderOperation(downloadList, unpackingMaxNumber, failedTryAgain); return operation; } else if (_playMode == EPlayMode.OfflinePlayMode) { - List downloadList = new List(); + List downloadList = new List(); var operation = new DownloaderOperation(downloadList, unpackingMaxNumber, failedTryAgain); return operation; }