mirror of https://github.com/tuyoogame/YooAsset
update resource package
parent
f84419b7a6
commit
dca37a3794
|
@ -0,0 +1,140 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace YooAsset
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 文件系统参数
|
||||||
|
/// </summary>
|
||||||
|
public class FileSystemParameters
|
||||||
|
{
|
||||||
|
internal readonly Dictionary<string, object> CreateParameters = new Dictionary<string, object>(100);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 文件系统类
|
||||||
|
/// 格式: "namespace.class,assembly"
|
||||||
|
/// 格式: "命名空间.类型名,程序集"
|
||||||
|
/// </summary>
|
||||||
|
public string FileSystemClass { private set; get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 文件系统的根目录
|
||||||
|
/// </summary>
|
||||||
|
public string RootDirectory { private set; get; }
|
||||||
|
|
||||||
|
|
||||||
|
public FileSystemParameters(string fileSystemClass, string rootDirectory)
|
||||||
|
{
|
||||||
|
FileSystemClass = fileSystemClass;
|
||||||
|
RootDirectory = rootDirectory;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加自定义参数
|
||||||
|
/// </summary>
|
||||||
|
public void AddParameter(string name, object value)
|
||||||
|
{
|
||||||
|
CreateParameters.Add(name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建文件系统
|
||||||
|
/// </summary>
|
||||||
|
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 创建默认的文件系统类
|
||||||
|
/// <summary>
|
||||||
|
/// 创建默认的编辑器文件系统参数
|
||||||
|
/// <param name="simulateBuildResult">模拟构建结果</param>
|
||||||
|
/// </summary>
|
||||||
|
public static FileSystemParameters CreateDefaultEditorFileSystemParameters(EditorSimulateBuildResult simulateBuildResult)
|
||||||
|
{
|
||||||
|
string fileSystemClass = typeof(DefaultEditorFileSystem).FullName;
|
||||||
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, simulateBuildResult.PackageRootDirectory);
|
||||||
|
return fileSystemParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建默认的内置文件系统参数
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="decryptionServices">加密文件解密服务类</param>
|
||||||
|
/// <param name="verifyLevel">缓存文件的校验等级</param>
|
||||||
|
/// <param name="rootDirectory">内置文件的根路径</param>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建默认的缓存文件系统参数
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="remoteServices">远端资源地址查询服务类</param>
|
||||||
|
/// <param name="decryptionServices">加密文件解密服务类</param>
|
||||||
|
/// <param name="verifyLevel">缓存文件的校验等级</param>
|
||||||
|
/// <param name="rootDirectory">文件系统的根目录</param>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建默认的WebServer文件系统参数
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disableUnityWebCache">禁用Unity的网络缓存</param>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建默认的WebRemote文件系统参数
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="remoteServices">远端资源地址查询服务类</param>
|
||||||
|
/// <param name="disableUnityWebCache">禁用Unity的网络缓存</param>
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6ce5a2677e1696d488c3b883fa915ae0
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -1,6 +1,4 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -29,111 +27,6 @@ namespace YooAsset
|
||||||
WebPlayMode,
|
WebPlayMode,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 文件系统参数
|
|
||||||
/// </summary>
|
|
||||||
public class FileSystemParameters
|
|
||||||
{
|
|
||||||
internal Dictionary<string, object> CreateParameters = new Dictionary<string, object>();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 文件系统类
|
|
||||||
/// 格式: "namespace.class,assembly"
|
|
||||||
/// 格式: "命名空间.类型名,程序集"
|
|
||||||
/// </summary>
|
|
||||||
public string FileSystemClass { private set; get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 文件系统的根目录
|
|
||||||
/// </summary>
|
|
||||||
public string RootDirectory { private set; get; }
|
|
||||||
|
|
||||||
|
|
||||||
public FileSystemParameters(string fileSystemClass, string rootDirectory)
|
|
||||||
{
|
|
||||||
FileSystemClass = fileSystemClass;
|
|
||||||
RootDirectory = rootDirectory;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 添加自定义参数
|
|
||||||
/// </summary>
|
|
||||||
public void AddParameter(string name, object value)
|
|
||||||
{
|
|
||||||
CreateParameters.Add(name, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建默认的编辑器文件系统参数
|
|
||||||
/// <param name="simulateBuildResult">模拟构建结果</param>
|
|
||||||
/// </summary>
|
|
||||||
public static FileSystemParameters CreateDefaultEditorFileSystemParameters(EditorSimulateBuildResult simulateBuildResult)
|
|
||||||
{
|
|
||||||
string fileSystemClass = typeof(DefaultEditorFileSystem).FullName;
|
|
||||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, simulateBuildResult.PackageRootDirectory);
|
|
||||||
return fileSystemParams;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建默认的内置文件系统参数
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="decryptionServices">加密文件解密服务类</param>
|
|
||||||
/// <param name="verifyLevel">缓存文件的校验等级</param>
|
|
||||||
/// <param name="rootDirectory">内置文件的根路径</param>
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建默认的缓存文件系统参数
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="remoteServices">远端资源地址查询服务类</param>
|
|
||||||
/// <param name="decryptionServices">加密文件解密服务类</param>
|
|
||||||
/// <param name="verifyLevel">缓存文件的校验等级</param>
|
|
||||||
/// <param name="rootDirectory">文件系统的根目录</param>
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建默认的WebServer文件系统参数
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disableUnityWebCache">禁用Unity的网络缓存</param>
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建默认的WebRemote文件系统参数
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="remoteServices">远端资源地址查询服务类</param>
|
|
||||||
/// <param name="disableUnityWebCache">禁用Unity的网络缓存</param>
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 初始化参数
|
/// 初始化参数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -47,7 +47,7 @@ namespace YooAsset
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_impl.EditorFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.EditorFileSystemParameters);
|
_impl.EditorFileSystem = _parameters.EditorFileSystemParameters.CreateFileSystem(_impl.PackageName);
|
||||||
if (_impl.EditorFileSystem == null)
|
if (_impl.EditorFileSystem == null)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
|
@ -127,7 +127,7 @@ namespace YooAsset
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_impl.BuildinFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.BuildinFileSystemParameters);
|
_impl.BuildinFileSystem = _parameters.BuildinFileSystemParameters.CreateFileSystem(_impl.PackageName);
|
||||||
if (_impl.BuildinFileSystem == null)
|
if (_impl.BuildinFileSystem == null)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
|
@ -206,7 +206,7 @@ namespace YooAsset
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_impl.BuildinFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.BuildinFileSystemParameters);
|
_impl.BuildinFileSystem = _parameters.BuildinFileSystemParameters.CreateFileSystem(_impl.PackageName);
|
||||||
if (_impl.BuildinFileSystem == null)
|
if (_impl.BuildinFileSystem == null)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
|
@ -249,7 +249,7 @@ namespace YooAsset
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_impl.CacheFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.CacheFileSystemParameters);
|
_impl.CacheFileSystem = _parameters.CacheFileSystemParameters.CreateFileSystem(_impl.PackageName);
|
||||||
if (_impl.CacheFileSystem == null)
|
if (_impl.CacheFileSystem == null)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
|
@ -329,7 +329,7 @@ namespace YooAsset
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_impl.WebServerFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.WebServerFileSystemParameters);
|
_impl.WebServerFileSystem = _parameters.WebServerFileSystemParameters.CreateFileSystem(_impl.PackageName);
|
||||||
if (_impl.WebServerFileSystem == null)
|
if (_impl.WebServerFileSystem == null)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
|
@ -370,7 +370,7 @@ namespace YooAsset
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_impl.WebRemoteFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.WebRemoteFileSystemParameters);
|
_impl.WebRemoteFileSystem = _parameters.WebRemoteFileSystemParameters.CreateFileSystem(_impl.PackageName);
|
||||||
if (_impl.WebRemoteFileSystem == null)
|
if (_impl.WebRemoteFileSystem == null)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
|
|
|
@ -5,32 +5,6 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class PlayModeHelper
|
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<BundleInfo> GetDownloadListByAll(PackageManifest manifest, IFileSystem fileSystemA = null, IFileSystem fileSystemB = null, IFileSystem fileSystemC = null)
|
public static List<BundleInfo> GetDownloadListByAll(PackageManifest manifest, IFileSystem fileSystemA = null, IFileSystem fileSystemB = null, IFileSystem fileSystemC = null)
|
||||||
{
|
{
|
||||||
List<BundleInfo> result = new List<BundleInfo>(1000);
|
List<BundleInfo> result = new List<BundleInfo>(1000);
|
||||||
|
|
|
@ -257,6 +257,7 @@ namespace YooAsset
|
||||||
return _playModeImpl.ClearCacheBundleFilesAsync(clearMode, clearParam);
|
return _playModeImpl.ClearCacheBundleFilesAsync(clearMode, clearParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region 包裹信息
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取当前激活包裹的版本信息
|
/// 获取当前激活包裹的版本信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -283,6 +284,7 @@ namespace YooAsset
|
||||||
DebugCheckInitialize();
|
DebugCheckInitialize();
|
||||||
return _playModeImpl.ActiveManifest.GetPackageDetails();
|
return _playModeImpl.ActiveManifest.GetPackageDetails();
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region 资源回收
|
#region 资源回收
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue