diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs
index 313a739e..615e4d53 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs
@@ -58,6 +58,11 @@ namespace YooAsset
///
public EFileVerifyLevel FileVerifyLevel { private set; get; } = EFileVerifyLevel.Middle;
+ ///
+ /// 自定义参数:覆盖安装缓存清理模式
+ ///
+ public EOverwriteInstallClearMode InstallClearMode { private set; get; } = EOverwriteInstallClearMode.ClearAllManifestFiles;
+
///
/// 自定义参数:数据文件追加文件格式
///
@@ -145,6 +150,10 @@ namespace YooAsset
{
FileVerifyLevel = (EFileVerifyLevel)value;
}
+ else if (name == FileSystemParametersDefine.INSTALL_CLEAR_MODE)
+ {
+ InstallClearMode = (EOverwriteInstallClearMode)value;
+ }
else if (name == FileSystemParametersDefine.APPEND_FILE_EXTENSION)
{
AppendFileExtension = Convert.ToBoolean(value);
@@ -184,6 +193,7 @@ namespace YooAsset
_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.APPEND_FILE_EXTENSION, AppendFileExtension);
_unpackFileSystem.SetParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, DecryptionServices);
_unpackFileSystem.OnCreate(packageName, null);
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs
index 9718bfe1..a2e3e6ae 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs
@@ -65,6 +65,11 @@ namespace YooAsset
///
public EFileVerifyLevel FileVerifyLevel { private set; get; } = EFileVerifyLevel.Middle;
+ ///
+ /// 自定义参数:覆盖安装缓存清理模式
+ ///
+ public EOverwriteInstallClearMode InstallClearMode { private set; get; } = EOverwriteInstallClearMode.ClearAllManifestFiles;
+
///
/// 自定义参数:数据文件追加文件格式
///
@@ -188,6 +193,10 @@ namespace YooAsset
{
FileVerifyLevel = (EFileVerifyLevel)value;
}
+ else if (name == FileSystemParametersDefine.INSTALL_CLEAR_MODE)
+ {
+ InstallClearMode = (EOverwriteInstallClearMode)value;
+ }
else if (name == FileSystemParametersDefine.APPEND_FILE_EXTENSION)
{
AppendFileExtension = Convert.ToBoolean(value);
@@ -227,8 +236,8 @@ namespace YooAsset
_packageRoot = packageRoot;
_cacheBundleFilesRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.BundleFilesFolderName);
- _tempFilesRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.TempFilesFolderName);
_cacheManifestFilesRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.ManifestFilesFolderName);
+ _tempFilesRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.TempFilesFolderName);
}
public virtual void OnDestroy()
{
@@ -500,7 +509,18 @@ namespace YooAsset
}
///
- /// 删除所有清单文件
+ /// 删除所有缓存的资源文件
+ ///
+ public void DeleteAllBundleFiles()
+ {
+ if (Directory.Exists(_cacheBundleFilesRoot))
+ {
+ Directory.Delete(_cacheBundleFilesRoot, true);
+ }
+ }
+
+ ///
+ /// 删除所有缓存的清单文件
///
public void DeleteAllManifestFiles()
{
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/EOverwriteInstallClearMode.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/EOverwriteInstallClearMode.cs
new file mode 100644
index 00000000..0a1c4032
--- /dev/null
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/EOverwriteInstallClearMode.cs
@@ -0,0 +1,29 @@
+
+namespace YooAsset
+{
+ ///
+ /// 覆盖安装清理模式
+ ///
+ public enum EOverwriteInstallClearMode
+ {
+ ///
+ /// 不做任何处理
+ ///
+ None = 0,
+
+ ///
+ /// 清理所有缓存文件(包含资源文件和清单文件)
+ ///
+ ClearAllCacheFiles = 1,
+
+ ///
+ /// 清理所有缓存的资源文件
+ ///
+ ClearAllBundleFiles = 2,
+
+ ///
+ /// 清理所有缓存的清单文件
+ ///
+ ClearAllManifestFiles = 3,
+ }
+}
\ No newline at end of file
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/EOverwriteInstallClearMode.cs.meta b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/EOverwriteInstallClearMode.cs.meta
new file mode 100644
index 00000000..e7df2fd8
--- /dev/null
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/EOverwriteInstallClearMode.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c61fdc079dca97548a0158b8100ec258
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSInitializeOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSInitializeOperation.cs
index e8d27788..782c017a 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSInitializeOperation.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSInitializeOperation.cs
@@ -46,9 +46,32 @@ namespace YooAsset
// 如果水印发生变化,则说明覆盖安装后首次打开游戏
if (appFootPrint.IsDirty())
{
- _fileSystem.DeleteAllManifestFiles();
+ if (_fileSystem.InstallClearMode == EOverwriteInstallClearMode.None)
+ {
+ YooLogger.Warning("Do nothing when overwrite install application !");
+ }
+ else if (_fileSystem.InstallClearMode == EOverwriteInstallClearMode.ClearAllCacheFiles)
+ {
+ _fileSystem.DeleteAllBundleFiles();
+ _fileSystem.DeleteAllManifestFiles();
+ YooLogger.Warning("Delete all cache files when overwrite install application !");
+ }
+ else if (_fileSystem.InstallClearMode == EOverwriteInstallClearMode.ClearAllBundleFiles)
+ {
+ _fileSystem.DeleteAllBundleFiles();
+ YooLogger.Warning("Delete all bundle files when overwrite install application !");
+ }
+ else if (_fileSystem.InstallClearMode == EOverwriteInstallClearMode.ClearAllManifestFiles)
+ {
+ _fileSystem.DeleteAllManifestFiles();
+ YooLogger.Warning("Delete all manifest files when overwrite install application !");
+ }
+ else
+ {
+ throw new System.NotImplementedException(_fileSystem.InstallClearMode.ToString());
+ }
+
appFootPrint.Coverage(_fileSystem.PackageName);
- YooLogger.Warning("Delete manifest files when application foot print dirty !");
}
_steps = ESteps.SearchCacheFiles;
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystem.cs
index c45b5f26..3b56ac3a 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystem.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystem.cs
@@ -14,7 +14,8 @@ namespace YooAsset
base.OnCreate(packageName, rootDirectory);
// 注意:重写保存根目录和临时目录
- _cacheBundleFilesRoot = PathUtility.Combine(_packageRoot, DefaultUnpackFileSystemDefine.SaveFilesFolderName);
+ _cacheBundleFilesRoot = PathUtility.Combine(_packageRoot, DefaultUnpackFileSystemDefine.SaveBundleFilesFolderName);
+ _cacheManifestFilesRoot = PathUtility.Combine(_packageRoot, DefaultUnpackFileSystemDefine.SaveManifestFilesFolderName);
_tempFilesRoot = PathUtility.Combine(_packageRoot, DefaultUnpackFileSystemDefine.TempFilesFolderName);
}
}
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystemDefine.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystemDefine.cs
index 2cc50180..0eb7709d 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystemDefine.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystemDefine.cs
@@ -11,8 +11,13 @@ namespace YooAsset
///
/// 保存的资源文件的文件夹名称
///
- public const string SaveFilesFolderName = "UnpackFiles";
-
+ public const string SaveBundleFilesFolderName = "UnpackBundleFiles";
+
+ ///
+ /// 保存的清单文件的文件夹名称
+ ///
+ public const string SaveManifestFilesFolderName = "UnpackManifestFiles";
+
///
/// 下载的临时文件的文件夹名称
///
diff --git a/Assets/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs b/Assets/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs
index ceff58f8..6c61693f 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 INSTALL_CLEAR_MODE = "INSTALL_CLEAR_MODE";
public const string REMOTE_SERVICES = "REMOTE_SERVICES";
public const string DECRYPTION_SERVICES = "DECRYPTION_SERVICES";
public const string APPEND_FILE_EXTENSION = "APPEND_FILE_EXTENSION";