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";