diff --git a/Assets/YooAsset/Runtime/FileSystem/FileSystemParameters.cs b/Assets/YooAsset/Runtime/FileSystem/FileSystemParameters.cs
new file mode 100644
index 00000000..8df664be
--- /dev/null
+++ b/Assets/YooAsset/Runtime/FileSystem/FileSystemParameters.cs
@@ -0,0 +1,140 @@
+using System;
+using System.Collections.Generic;
+
+namespace YooAsset
+{
+ ///
+ /// 文件系统参数
+ ///
+ public class FileSystemParameters
+ {
+ internal readonly Dictionary CreateParameters = new Dictionary(100);
+
+ ///
+ /// 文件系统类
+ /// 格式: "namespace.class,assembly"
+ /// 格式: "命名空间.类型名,程序集"
+ ///
+ public string FileSystemClass { private set; get; }
+
+ ///
+ /// 文件系统的根目录
+ ///
+ public string RootDirectory { private set; get; }
+
+
+ public FileSystemParameters(string fileSystemClass, string rootDirectory)
+ {
+ FileSystemClass = fileSystemClass;
+ RootDirectory = rootDirectory;
+ }
+
+ ///
+ /// 添加自定义参数
+ ///
+ public void AddParameter(string name, object value)
+ {
+ CreateParameters.Add(name, value);
+ }
+
+ ///
+ /// 创建文件系统
+ ///
+ internal IFileSystem CreateFileSystem(string packageName)
+ {
+ YooLogger.Log($"The package {packageName} create file system : {FileSystemClass}");
+
+ Type classType = Type.GetType(FileSystemClass);
+ if (classType == null)
+ {
+ YooLogger.Error($"Can not found file system class type {FileSystemClass}");
+ return null;
+ }
+
+ var instance = (IFileSystem)System.Activator.CreateInstance(classType, true);
+ if (instance == null)
+ {
+ YooLogger.Error($"Failed to create file system instance {FileSystemClass}");
+ return null;
+ }
+
+ foreach (var param in CreateParameters)
+ {
+ instance.SetParameter(param.Key, param.Value);
+ }
+ instance.OnCreate(packageName, RootDirectory);
+ return instance;
+ }
+
+ #region 创建默认的文件系统类
+ ///
+ /// 创建默认的编辑器文件系统参数
+ /// 模拟构建结果
+ ///
+ public static FileSystemParameters CreateDefaultEditorFileSystemParameters(EditorSimulateBuildResult simulateBuildResult)
+ {
+ string fileSystemClass = typeof(DefaultEditorFileSystem).FullName;
+ var fileSystemParams = new FileSystemParameters(fileSystemClass, simulateBuildResult.PackageRootDirectory);
+ return fileSystemParams;
+ }
+
+ ///
+ /// 创建默认的内置文件系统参数
+ ///
+ /// 加密文件解密服务类
+ /// 缓存文件的校验等级
+ /// 内置文件的根路径
+ public static FileSystemParameters CreateDefaultBuildinFileSystemParameters(IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null)
+ {
+ string fileSystemClass = typeof(DefaultBuildinFileSystem).FullName;
+ var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory);
+ fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices);
+ fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel);
+ return fileSystemParams;
+ }
+
+ ///
+ /// 创建默认的缓存文件系统参数
+ ///
+ /// 远端资源地址查询服务类
+ /// 加密文件解密服务类
+ /// 缓存文件的校验等级
+ /// 文件系统的根目录
+ public static FileSystemParameters CreateDefaultCacheFileSystemParameters(IRemoteServices remoteServices, IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null)
+ {
+ string fileSystemClass = typeof(DefaultCacheFileSystem).FullName;
+ var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory);
+ fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices);
+ fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices);
+ fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel);
+ return fileSystemParams;
+ }
+
+ ///
+ /// 创建默认的WebServer文件系统参数
+ ///
+ /// 禁用Unity的网络缓存
+ public static FileSystemParameters CreateDefaultWebServerFileSystemParameters(bool disableUnityWebCache = false)
+ {
+ string fileSystemClass = typeof(DefaultWebServerFileSystem).FullName;
+ var fileSystemParams = new FileSystemParameters(fileSystemClass, null);
+ fileSystemParams.AddParameter(FileSystemParametersDefine.DISABLE_UNITY_WEB_CACHE, disableUnityWebCache);
+ return fileSystemParams;
+ }
+
+ ///
+ /// 创建默认的WebRemote文件系统参数
+ ///
+ /// 远端资源地址查询服务类
+ /// 禁用Unity的网络缓存
+ public static FileSystemParameters CreateDefaultWebRemoteFileSystemParameters(IRemoteServices remoteServices, bool disableUnityWebCache = false)
+ {
+ string fileSystemClass = typeof(DefaultWebServerFileSystem).FullName;
+ var fileSystemParams = new FileSystemParameters(fileSystemClass, null);
+ fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices);
+ fileSystemParams.AddParameter(FileSystemParametersDefine.DISABLE_UNITY_WEB_CACHE, disableUnityWebCache);
+ return fileSystemParams;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/YooAsset/Runtime/FileSystem/FileSystemParameters.cs.meta b/Assets/YooAsset/Runtime/FileSystem/FileSystemParameters.cs.meta
new file mode 100644
index 00000000..7db0d2c2
--- /dev/null
+++ b/Assets/YooAsset/Runtime/FileSystem/FileSystemParameters.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6ce5a2677e1696d488c3b883fa915ae0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/YooAsset/Runtime/InitializeParameters.cs b/Assets/YooAsset/Runtime/InitializeParameters.cs
index c56579f1..152e2523 100644
--- a/Assets/YooAsset/Runtime/InitializeParameters.cs
+++ b/Assets/YooAsset/Runtime/InitializeParameters.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-
+
namespace YooAsset
{
///
@@ -29,111 +27,6 @@ namespace YooAsset
WebPlayMode,
}
- ///
- /// 文件系统参数
- ///
- public class FileSystemParameters
- {
- internal Dictionary CreateParameters = new Dictionary();
-
- ///
- /// 文件系统类
- /// 格式: "namespace.class,assembly"
- /// 格式: "命名空间.类型名,程序集"
- ///
- public string FileSystemClass { private set; get; }
-
- ///
- /// 文件系统的根目录
- ///
- public string RootDirectory { private set; get; }
-
-
- public FileSystemParameters(string fileSystemClass, string rootDirectory)
- {
- FileSystemClass = fileSystemClass;
- RootDirectory = rootDirectory;
- }
-
- ///
- /// 添加自定义参数
- ///
- public void AddParameter(string name, object value)
- {
- CreateParameters.Add(name, value);
- }
-
-
- ///
- /// 创建默认的编辑器文件系统参数
- /// 模拟构建结果
- ///
- public static FileSystemParameters CreateDefaultEditorFileSystemParameters(EditorSimulateBuildResult simulateBuildResult)
- {
- string fileSystemClass = typeof(DefaultEditorFileSystem).FullName;
- var fileSystemParams = new FileSystemParameters(fileSystemClass, simulateBuildResult.PackageRootDirectory);
- return fileSystemParams;
- }
-
- ///
- /// 创建默认的内置文件系统参数
- ///
- /// 加密文件解密服务类
- /// 缓存文件的校验等级
- /// 内置文件的根路径
- public static FileSystemParameters CreateDefaultBuildinFileSystemParameters(IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null)
- {
- string fileSystemClass = typeof(DefaultBuildinFileSystem).FullName;
- var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory);
- fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices);
- fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel);
- return fileSystemParams;
- }
-
- ///
- /// 创建默认的缓存文件系统参数
- ///
- /// 远端资源地址查询服务类
- /// 加密文件解密服务类
- /// 缓存文件的校验等级
- /// 文件系统的根目录
- public static FileSystemParameters CreateDefaultCacheFileSystemParameters(IRemoteServices remoteServices, IDecryptionServices decryptionServices = null, EFileVerifyLevel verifyLevel = EFileVerifyLevel.Middle, string rootDirectory = null)
- {
- string fileSystemClass = typeof(DefaultCacheFileSystem).FullName;
- var fileSystemParams = new FileSystemParameters(fileSystemClass, rootDirectory);
- fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices);
- fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices);
- fileSystemParams.AddParameter(FileSystemParametersDefine.FILE_VERIFY_LEVEL, verifyLevel);
- return fileSystemParams;
- }
-
- ///
- /// 创建默认的WebServer文件系统参数
- ///
- /// 禁用Unity的网络缓存
- public static FileSystemParameters CreateDefaultWebServerFileSystemParameters(bool disableUnityWebCache = false)
- {
- string fileSystemClass = typeof(DefaultWebServerFileSystem).FullName;
- var fileSystemParams = new FileSystemParameters(fileSystemClass, null);
- fileSystemParams.AddParameter(FileSystemParametersDefine.DISABLE_UNITY_WEB_CACHE, disableUnityWebCache);
- return fileSystemParams;
- }
-
- ///
- /// 创建默认的WebRemote文件系统参数
- ///
- /// 远端资源地址查询服务类
- /// 禁用Unity的网络缓存
- public static FileSystemParameters CreateDefaultWebRemoteFileSystemParameters(IRemoteServices remoteServices, bool disableUnityWebCache = false)
- {
- string fileSystemClass = typeof(DefaultWebServerFileSystem).FullName;
- var fileSystemParams = new FileSystemParameters(fileSystemClass, null);
- fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices);
- fileSystemParams.AddParameter(FileSystemParametersDefine.DISABLE_UNITY_WEB_CACHE, disableUnityWebCache);
- return fileSystemParams;
- }
- }
-
///
/// 初始化参数
///
diff --git a/Assets/YooAsset/Runtime/ResourcePackage/Operation/InitializationOperation.cs b/Assets/YooAsset/Runtime/ResourcePackage/Operation/InitializationOperation.cs
index a721bcb0..640de2ab 100644
--- a/Assets/YooAsset/Runtime/ResourcePackage/Operation/InitializationOperation.cs
+++ b/Assets/YooAsset/Runtime/ResourcePackage/Operation/InitializationOperation.cs
@@ -47,7 +47,7 @@ namespace YooAsset
return;
}
- _impl.EditorFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.EditorFileSystemParameters);
+ _impl.EditorFileSystem = _parameters.EditorFileSystemParameters.CreateFileSystem(_impl.PackageName);
if (_impl.EditorFileSystem == null)
{
_steps = ESteps.Done;
@@ -127,7 +127,7 @@ namespace YooAsset
return;
}
- _impl.BuildinFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.BuildinFileSystemParameters);
+ _impl.BuildinFileSystem = _parameters.BuildinFileSystemParameters.CreateFileSystem(_impl.PackageName);
if (_impl.BuildinFileSystem == null)
{
_steps = ESteps.Done;
@@ -206,7 +206,7 @@ namespace YooAsset
return;
}
- _impl.BuildinFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.BuildinFileSystemParameters);
+ _impl.BuildinFileSystem = _parameters.BuildinFileSystemParameters.CreateFileSystem(_impl.PackageName);
if (_impl.BuildinFileSystem == null)
{
_steps = ESteps.Done;
@@ -249,7 +249,7 @@ namespace YooAsset
return;
}
- _impl.CacheFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.CacheFileSystemParameters);
+ _impl.CacheFileSystem = _parameters.CacheFileSystemParameters.CreateFileSystem(_impl.PackageName);
if (_impl.CacheFileSystem == null)
{
_steps = ESteps.Done;
@@ -329,7 +329,7 @@ namespace YooAsset
return;
}
- _impl.WebServerFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.WebServerFileSystemParameters);
+ _impl.WebServerFileSystem = _parameters.WebServerFileSystemParameters.CreateFileSystem(_impl.PackageName);
if (_impl.WebServerFileSystem == null)
{
_steps = ESteps.Done;
@@ -370,7 +370,7 @@ namespace YooAsset
return;
}
- _impl.WebRemoteFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.WebRemoteFileSystemParameters);
+ _impl.WebRemoteFileSystem = _parameters.WebRemoteFileSystemParameters.CreateFileSystem(_impl.PackageName);
if (_impl.WebRemoteFileSystem == null)
{
_steps = ESteps.Done;
diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/PlayModeHelper.cs b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/PlayModeHelper.cs
index 609d1985..e1691257 100644
--- a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/PlayModeHelper.cs
+++ b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/PlayModeHelper.cs
@@ -5,32 +5,6 @@ namespace YooAsset
{
internal class PlayModeHelper
{
- public static IFileSystem CreateFileSystem(string packageName, FileSystemParameters parameters)
- {
- YooLogger.Log($"The package {packageName} create file system : {parameters.FileSystemClass}");
-
- Type classType = Type.GetType(parameters.FileSystemClass);
- if (classType == null)
- {
- YooLogger.Error($"Can not found file system class type {parameters.FileSystemClass}");
- return null;
- }
-
- var instance = (IFileSystem)System.Activator.CreateInstance(classType, true);
- if (instance == null)
- {
- YooLogger.Error($"Failed to create file system instance {parameters.FileSystemClass}");
- return null;
- }
-
- foreach (var param in parameters.CreateParameters)
- {
- instance.SetParameter(param.Key, param.Value);
- }
- instance.OnCreate(packageName, parameters.RootDirectory);
- return instance;
- }
-
public static List GetDownloadListByAll(PackageManifest manifest, IFileSystem fileSystemA = null, IFileSystem fileSystemB = null, IFileSystem fileSystemC = null)
{
List result = new List(1000);
diff --git a/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs b/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs
index 156e6d0a..4e8768a2 100644
--- a/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs
+++ b/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs
@@ -257,6 +257,7 @@ namespace YooAsset
return _playModeImpl.ClearCacheBundleFilesAsync(clearMode, clearParam);
}
+ #region 包裹信息
///
/// 获取当前激活包裹的版本信息
///
@@ -283,6 +284,7 @@ namespace YooAsset
DebugCheckInitialize();
return _playModeImpl.ActiveManifest.GetPackageDetails();
}
+ #endregion
#region 资源回收
///