mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
增加MiniGameFileSystem的支持,增加EncryptType的解密枚举类型,以及ResourceModule解密方法实现
增加MiniGameFileSystem的支持,增加EncryptType的解密枚举类型,以及ResourceModule解密方法实现
This commit is contained in:
@@ -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>
|
||||
|
Reference in New Issue
Block a user