增加MiniGameFileSystem的支持,增加EncryptType的解密枚举类型,以及ResourceModule解密方法实现

增加MiniGameFileSystem的支持,增加EncryptType的解密枚举类型,以及ResourceModule解密方法实现
This commit is contained in:
Alex-Rachel
2025-03-19 12:40:13 +08:00
parent 36db2f3aba
commit f2a63978da
8 changed files with 148 additions and 8 deletions

View File

@@ -5,6 +5,9 @@ using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;
using YooAsset;
#if UNITY_WEBGL && WEIXINMINIGAME && !UNITY_EDITOR
using WeChatWASM;
#endif
namespace TEngine
{
@@ -22,6 +25,8 @@ namespace TEngine
/// 资源系统运行模式。
/// </summary>
public EPlayMode PlayMode { get; set; } = EPlayMode.OfflinePlayMode;
public EncryptionType EncryptionType { get; set; } = EncryptionType.None;
/// <summary>
/// 设置异步系统参数,每帧执行消耗的最大时间切片(单位:毫秒)
@@ -164,12 +169,14 @@ namespace TEngine
createParameters.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot);
initializationOperation = package.InitializeAsync(createParameters);
}
IDecryptionServices decryptionServices = CreateDecryptionServices();
// 单机运行模式
if (playMode == EPlayMode.OfflinePlayMode)
{
var createParameters = new OfflinePlayModeParameters();
createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters();
createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
initializationOperation = package.InitializeAsync(createParameters);
}
@@ -180,8 +187,8 @@ namespace TEngine
string fallbackHostServer = FallbackHostServerURL;
IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer);
var createParameters = new HostPlayModeParameters();
createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters();
createParameters.CacheFileSystemParameters = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices);
createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
createParameters.CacheFileSystemParameters = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices, decryptionServices);
initializationOperation = package.InitializeAsync(createParameters);
}
@@ -190,10 +197,14 @@ namespace TEngine
{
var createParameters = new WebPlayModeParameters();
#if UNITY_WEBGL && WEIXINMINIGAME && !UNITY_EDITOR
IWebDecryptionServices webDecryptionServices = CreateWebDecryptionServices();
// 注意:如果有子目录,请修改此处!
string packageRoot = $"{WeChatWASM.WX.env.USER_DATA_PATH}/__GAME_FILE_CACHE";
string defaultHostServer = HostServerURL;
string fallbackHostServer = FallbackHostServerURL;
IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer);
createParameters.WebServerFileSystemParameters = WechatFileSystemCreater.CreateWechatFileSystemParameters(remoteServices);
createParameters.WebServerFileSystemParameters = WechatFileSystemCreater.CreateFileSystemParameters(packageRoot, remoteServices, webDecryptionServices);
#else
createParameters.WebServerFileSystemParameters = FileSystemParameters.CreateDefaultWebServerFileSystemParameters();
#endif
@@ -207,6 +218,32 @@ namespace TEngine
return initializationOperation;
}
/// <summary>
/// 创建解密服务。
/// </summary>
private IDecryptionServices CreateDecryptionServices()
{
return EncryptionType switch
{
EncryptionType.FileOffSet => new FileOffsetDecryption(),
EncryptionType.FileStream => new FileStreamDecryption(),
_ => null
};
}
/// <summary>
/// 创建Web解密服务。
/// </summary>
private IWebDecryptionServices CreateWebDecryptionServices()
{
return EncryptionType switch
{
EncryptionType.FileOffSet => new FileOffsetWebDecryption(),
EncryptionType.FileStream => new FileStreamWebDecryption(),
_ => null
};
}
/// <summary>
/// 获取当前资源包版本。
/// </summary>