From 6fc82bb55a64cbec84ba45f167f04361d0678afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Wed, 27 Aug 2025 18:03:53 +0800 Subject: [PATCH] =?UTF-8?q?feat=20:=20=E6=96=B0=E5=A2=9E=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=8E=A7=E5=88=B6=E7=BC=93=E5=AD=98=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E9=AA=8C=E8=AF=81=E6=9C=80=E5=A4=A7=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DefaultBuildinFileSystem.cs | 23 +++++++++++++----- .../DefaultCacheFileSystem.cs | 24 ++++++++++++++----- .../internal/VerifyCacheFilesOperation.cs | 4 +++- .../FileSystem/FileSystemParametersDefine.cs | 1 + 4 files changed, 39 insertions(+), 13 deletions(-) diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs index 4c43efa9..951508cf 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs @@ -53,15 +53,20 @@ namespace YooAsset } #region 自定义参数 + /// + /// 自定义参数:覆盖安装缓存清理模式 + /// + public EOverwriteInstallClearMode InstallClearMode { private set; get; } = EOverwriteInstallClearMode.ClearAllManifestFiles; + /// /// 自定义参数:初始化的时候缓存文件校验级别 /// public EFileVerifyLevel FileVerifyLevel { private set; get; } = EFileVerifyLevel.Middle; /// - /// 自定义参数:覆盖安装缓存清理模式 + /// 自定义参数:初始化的时候缓存文件校验最大并发数 /// - public EOverwriteInstallClearMode InstallClearMode { private set; get; } = EOverwriteInstallClearMode.ClearAllManifestFiles; + public int FileVerifyMaxConcurrency { private set; get; } = int.MaxValue; /// /// 自定义参数:数据文件追加文件格式 @@ -156,13 +161,18 @@ namespace YooAsset public virtual void SetParameter(string name, object value) { - if (name == FileSystemParametersDefine.FILE_VERIFY_LEVEL) + if (name == FileSystemParametersDefine.INSTALL_CLEAR_MODE) + { + InstallClearMode = (EOverwriteInstallClearMode)value; + } + else if (name == FileSystemParametersDefine.FILE_VERIFY_LEVEL) { FileVerifyLevel = (EFileVerifyLevel)value; } - else if (name == FileSystemParametersDefine.INSTALL_CLEAR_MODE) + else if (name == FileSystemParametersDefine.FILE_VERIFY_MAX_CONCURRENCY) { - InstallClearMode = (EOverwriteInstallClearMode)value; + int convertValue = Convert.ToInt32(value); + FileVerifyMaxConcurrency = Math.Clamp(convertValue, 1, int.MaxValue); } else if (name == FileSystemParametersDefine.APPEND_FILE_EXTENSION) { @@ -210,8 +220,9 @@ namespace YooAsset var remoteServices = new DefaultUnpackRemoteServices(_packageRoot); _unpackFileSystem = new DefaultUnpackFileSystem(); _unpackFileSystem.SetParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices); - _unpackFileSystem.SetParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, FileVerifyLevel); _unpackFileSystem.SetParameter(FileSystemParametersDefine.INSTALL_CLEAR_MODE, InstallClearMode); + _unpackFileSystem.SetParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, FileVerifyLevel); + _unpackFileSystem.SetParameter(FileSystemParametersDefine.FILE_VERIFY_MAX_CONCURRENCY, FileVerifyMaxConcurrency); _unpackFileSystem.SetParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, AppendFileExtension); _unpackFileSystem.SetParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, DecryptionServices); _unpackFileSystem.SetParameter(FileSystemParametersDefine.COPY_LOCAL_FILE_SERVICES, CopyLocalFileServices); diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs index fa6ff31d..5b21cfd2 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs @@ -60,15 +60,20 @@ namespace YooAsset /// public IRemoteServices RemoteServices { private set; get; } + /// + /// 自定义参数:覆盖安装缓存清理模式 + /// + public EOverwriteInstallClearMode InstallClearMode { private set; get; } = EOverwriteInstallClearMode.ClearAllManifestFiles; + /// /// 自定义参数:初始化的时候缓存文件校验级别 /// public EFileVerifyLevel FileVerifyLevel { private set; get; } = EFileVerifyLevel.Middle; /// - /// 自定义参数:覆盖安装缓存清理模式 + /// 自定义参数:初始化的时候缓存文件校验最大并发数 /// - public EOverwriteInstallClearMode InstallClearMode { private set; get; } = EOverwriteInstallClearMode.ClearAllManifestFiles; + public int FileVerifyMaxConcurrency { private set; get; } = int.MaxValue; /// /// 自定义参数:数据文件追加文件格式 @@ -215,13 +220,18 @@ namespace YooAsset { RemoteServices = (IRemoteServices)value; } + else if (name == FileSystemParametersDefine.INSTALL_CLEAR_MODE) + { + InstallClearMode = (EOverwriteInstallClearMode)value; + } else if (name == FileSystemParametersDefine.FILE_VERIFY_LEVEL) { FileVerifyLevel = (EFileVerifyLevel)value; } - else if (name == FileSystemParametersDefine.INSTALL_CLEAR_MODE) + else if (name == FileSystemParametersDefine.FILE_VERIFY_MAX_CONCURRENCY) { - InstallClearMode = (EOverwriteInstallClearMode)value; + int convertValue = Convert.ToInt32(value); + FileVerifyMaxConcurrency = Math.Clamp(convertValue, 1, int.MaxValue); } else if (name == FileSystemParametersDefine.APPEND_FILE_EXTENSION) { @@ -233,11 +243,13 @@ namespace YooAsset } else if (name == FileSystemParametersDefine.DOWNLOAD_MAX_CONCURRENCY) { - DownloadMaxConcurrency = Convert.ToInt32(value); + int convertValue = Convert.ToInt32(value); + DownloadMaxConcurrency = Math.Clamp(convertValue, 1, int.MaxValue); } else if (name == FileSystemParametersDefine.DOWNLOAD_MAX_REQUEST_PER_FRAME) { - DownloadMaxRequestPerFrame = Convert.ToInt32(value); + int convertValue = Convert.ToInt32(value); + DownloadMaxRequestPerFrame = Math.Clamp(convertValue, 1, int.MaxValue); } else if (name == FileSystemParametersDefine.RESUME_DOWNLOAD_MINMUM_SIZE) { diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/VerifyCacheFilesOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/VerifyCacheFilesOperation.cs index 79d3d8a4..5b36fe1a 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/VerifyCacheFilesOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/VerifyCacheFilesOperation.cs @@ -54,11 +54,13 @@ namespace YooAsset // 设置同时验证的最大数 ThreadPool.GetMaxThreads(out int workerThreads, out int ioThreads); YooLogger.Log($"Work threads : {workerThreads}, IO threads : {ioThreads}"); - _verifyMaxNum = Math.Min(workerThreads, ioThreads); + int threads = Math.Min(workerThreads, ioThreads); + _verifyMaxNum = Math.Min(threads, _fileSystem.FileVerifyMaxConcurrency); _verifyTotalCount = fileCount; if (_verifyMaxNum < 1) _verifyMaxNum = 1; + YooLogger.Log($"Verify max concurrency : {_verifyMaxNum}"); _verifyingList = new List(_verifyMaxNum); _steps = ESteps.UpdateVerify; } diff --git a/Assets/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs b/Assets/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs index 7cc91df4..b93f2384 100644 --- a/Assets/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs +++ b/Assets/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs @@ -4,6 +4,7 @@ namespace YooAsset public class FileSystemParametersDefine { public const string FILE_VERIFY_LEVEL = "FILE_VERIFY_LEVEL"; + public const string FILE_VERIFY_MAX_CONCURRENCY = "FILE_VERIFY_MAX_CONCURRENCY"; public const string INSTALL_CLEAR_MODE = "INSTALL_CLEAR_MODE"; public const string REMOTE_SERVICES = "REMOTE_SERVICES"; public const string DECRYPTION_SERVICES = "DECRYPTION_SERVICES";