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