mirror of
https://github.com/tuyoogame/YooAsset.git
synced 2026-05-26 18:50:10 +00:00
feat : web game file system support raw bundle
This commit is contained in:
@@ -31,7 +31,7 @@ namespace YooAsset
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建加载内置资源目录操作实例
|
/// 创建加载内置资源目录操作实例
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="options">加载内置资源目录的配置选项</param>
|
/// <param name="options">加载内置资源目录的操作选项</param>
|
||||||
internal LoadBuiltinCatalogOperation(LoadBuiltinCatalogOptions options)
|
internal LoadBuiltinCatalogOperation(LoadBuiltinCatalogOptions options)
|
||||||
{
|
{
|
||||||
_options = options;
|
_options = options;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace YooAsset
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建本地 ArchiveBundle 加载操作实例
|
/// 创建本地 ArchiveBundle 加载操作实例
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="options">从本地加载 ArchiveBundle 的配置选项</param>
|
/// <param name="options">从本地加载 ArchiveBundle 的操作选项</param>
|
||||||
public LoadLocalArchiveBundleOperation(LoadLocalArchiveBundleOptions options)
|
public LoadLocalArchiveBundleOperation(LoadLocalArchiveBundleOptions options)
|
||||||
{
|
{
|
||||||
_options = options;
|
_options = options;
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace YooAsset
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建本地 AssetBundle 加载操作实例
|
/// 创建本地 AssetBundle 加载操作实例
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="options">从本地加载 AssetBundle 的配置选项</param>
|
/// <param name="options">从本地加载 AssetBundle 的操作选项</param>
|
||||||
public LoadLocalAssetBundleOperation(LoadLocalAssetBundleOptions options)
|
public LoadLocalAssetBundleOperation(LoadLocalAssetBundleOptions options)
|
||||||
{
|
{
|
||||||
_options = options;
|
_options = options;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace YooAsset
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建本地 RawBundle 加载操作实例
|
/// 创建本地 RawBundle 加载操作实例
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="options">从本地加载 RawBundle 的配置选项</param>
|
/// <param name="options">从本地加载 RawBundle 的操作选项</param>
|
||||||
public LoadLocalRawBundleOperation(LoadLocalRawBundleOptions options)
|
public LoadLocalRawBundleOperation(LoadLocalRawBundleOptions options)
|
||||||
{
|
{
|
||||||
_options = options;
|
_options = options;
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ namespace YooAsset
|
|||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建 LoadWebNormalAssetBundleOperation 实例
|
/// 创建 AssetBundle 加载操作实例
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="options">从网络加载 AssetBundle 的配置选项</param>
|
/// <param name="options">从网络加载 AssetBundle 的操作选项</param>
|
||||||
public LoadWebNormalAssetBundleOperation(LoadWebAssetBundleOptions options)
|
public LoadWebNormalAssetBundleOperation(LoadWebAssetBundleOptions options)
|
||||||
{
|
{
|
||||||
_options = options;
|
_options = options;
|
||||||
@@ -133,6 +133,7 @@ namespace YooAsset
|
|||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
|
Prepare,
|
||||||
DataRequest,
|
DataRequest,
|
||||||
CheckRequest,
|
CheckRequest,
|
||||||
VerifyData,
|
VerifyData,
|
||||||
@@ -150,9 +151,9 @@ namespace YooAsset
|
|||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建 LoadWebEncryptedAssetBundleOperation 实例
|
/// 创建网络 AssetBundle 加载操作实例
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="options">从网络加载 AssetBundle 的配置选项</param>
|
/// <param name="options">从网络加载 AssetBundle 的操作选项</param>
|
||||||
public LoadWebEncryptedAssetBundleOperation(LoadWebAssetBundleOptions options)
|
public LoadWebEncryptedAssetBundleOperation(LoadWebAssetBundleOptions options)
|
||||||
{
|
{
|
||||||
_options = options;
|
_options = options;
|
||||||
@@ -162,34 +163,27 @@ namespace YooAsset
|
|||||||
}
|
}
|
||||||
protected override void InternalStart()
|
protected override void InternalStart()
|
||||||
{
|
{
|
||||||
_steps = ESteps.DataRequest;
|
_steps = ESteps.Prepare;
|
||||||
}
|
}
|
||||||
protected override void InternalUpdate()
|
protected override void InternalUpdate()
|
||||||
{
|
{
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
if (_steps == ESteps.None || _steps == ESteps.Done)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_steps == ESteps.DataRequest)
|
if (_steps == ESteps.Prepare)
|
||||||
{
|
{
|
||||||
var decryptor = _options.AssetBundleDecryptor;
|
var decryptor = _options.AssetBundleDecryptor;
|
||||||
if (decryptor == null)
|
if (decryptor == null)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
SetError($"{_options.CacheName} decryptor is null.");
|
SetError($"{_options.CacheName} asset bundle decryptor is null.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (decryptor is IBundleMemoryDecryptor)
|
if (decryptor is IBundleMemoryDecryptor)
|
||||||
{
|
{
|
||||||
_decryptor = decryptor as IBundleMemoryDecryptor;
|
_decryptor = decryptor as IBundleMemoryDecryptor;
|
||||||
string url = _options.DownloadUrlPolicy.SelectUrl(_options.CandidateUrls);
|
_steps = ESteps.DataRequest;
|
||||||
var args = new DownloadDataRequestArgs(
|
|
||||||
url: url,
|
|
||||||
timeout: 0,
|
|
||||||
watchdogTimeout: _options.WatchdogTimeout);
|
|
||||||
_downloadBytesRequest = _options.DownloadBackend.CreateBytesRequest(args);
|
|
||||||
_downloadBytesRequest.SendRequest();
|
|
||||||
_steps = ESteps.CheckRequest;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -199,6 +193,18 @@ namespace YooAsset
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_steps == ESteps.DataRequest)
|
||||||
|
{
|
||||||
|
string url = _options.DownloadUrlPolicy.SelectUrl(_options.CandidateUrls);
|
||||||
|
var args = new DownloadDataRequestArgs(
|
||||||
|
url: url,
|
||||||
|
timeout: 0,
|
||||||
|
watchdogTimeout: _options.WatchdogTimeout);
|
||||||
|
_downloadBytesRequest = _options.DownloadBackend.CreateBytesRequest(args);
|
||||||
|
_downloadBytesRequest.SendRequest();
|
||||||
|
_steps = ESteps.CheckRequest;
|
||||||
|
}
|
||||||
|
|
||||||
if (_steps == ESteps.CheckRequest)
|
if (_steps == ESteps.CheckRequest)
|
||||||
{
|
{
|
||||||
Progress = _downloadBytesRequest.DownloadProgress;
|
Progress = _downloadBytesRequest.DownloadProgress;
|
||||||
@@ -225,6 +231,7 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
SetError(_downloadBytesRequest.Error);
|
SetError(_downloadBytesRequest.Error);
|
||||||
|
YooLogger.LogError(Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -246,7 +253,7 @@ namespace YooAsset
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string error = $"[WebBundleVerify] Verify failed. Url: '{_downloadBytesRequest.Url}' Level: {_options.DownloadVerifyLevel} Result: {verifyResult}.";
|
string error = $"Verify failed. Url: '{_downloadBytesRequest.Url}' Level: {_options.DownloadVerifyLevel} Result: {verifyResult}.";
|
||||||
YooLogger.LogWarning(error);
|
YooLogger.LogWarning(error);
|
||||||
|
|
||||||
if (IsWaitForCompletion == false && _downloadRetryController.HasRetriesRemaining())
|
if (IsWaitForCompletion == false && _downloadRetryController.HasRetriesRemaining())
|
||||||
|
|||||||
@@ -0,0 +1,212 @@
|
|||||||
|
namespace YooAsset
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 从网络加载 RawBundle 操作
|
||||||
|
/// </summary>
|
||||||
|
internal sealed class LoadWebRawBundleOperation : BCLoadBundleOperation
|
||||||
|
{
|
||||||
|
private enum ESteps
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Prepare,
|
||||||
|
DataRequest,
|
||||||
|
CheckRequest,
|
||||||
|
VerifyData,
|
||||||
|
LoadBundle,
|
||||||
|
TryAgain,
|
||||||
|
Done,
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly LoadWebRawBundleOptions _options;
|
||||||
|
private readonly DownloadRetryController _downloadRetryController;
|
||||||
|
private IDownloadBytesRequest _downloadBytesRequest;
|
||||||
|
private IBundleMemoryDecryptor _decryptor;
|
||||||
|
private RawBundle _rawBundle;
|
||||||
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建网络 RawBundle 加载操作实例
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="options">从网络加载 RawBundle 的操作选项</param>
|
||||||
|
internal LoadWebRawBundleOperation(LoadWebRawBundleOptions options)
|
||||||
|
{
|
||||||
|
_options = options;
|
||||||
|
|
||||||
|
// 注意:网络原因失败后,重新尝试直到成功
|
||||||
|
_downloadRetryController = new DownloadRetryController(int.MaxValue, options.DownloadRetryPolicy);
|
||||||
|
}
|
||||||
|
protected override void InternalStart()
|
||||||
|
{
|
||||||
|
_steps = ESteps.Prepare;
|
||||||
|
}
|
||||||
|
protected override void InternalUpdate()
|
||||||
|
{
|
||||||
|
if (_steps == ESteps.None || _steps == ESteps.Done)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_steps == ESteps.Prepare)
|
||||||
|
{
|
||||||
|
if (_options.Bundle.IsEncrypted == false)
|
||||||
|
{
|
||||||
|
_steps = ESteps.DataRequest;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var decryptor = _options.RawBundleDecryptor;
|
||||||
|
if (decryptor == null)
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
SetError($"{_options.CacheName} raw bundle decryptor is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (decryptor is IBundleMemoryDecryptor)
|
||||||
|
{
|
||||||
|
_decryptor = decryptor as IBundleMemoryDecryptor;
|
||||||
|
_steps = ESteps.DataRequest;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
SetError($"{_options.CacheName} does not support '{decryptor.GetType().Name}'.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_steps == ESteps.DataRequest)
|
||||||
|
{
|
||||||
|
string url = _options.DownloadUrlPolicy.SelectUrl(_options.CandidateUrls);
|
||||||
|
var args = new DownloadDataRequestArgs(
|
||||||
|
url: url,
|
||||||
|
timeout: 0,
|
||||||
|
watchdogTimeout: _options.WatchdogTimeout);
|
||||||
|
_downloadBytesRequest = _options.DownloadBackend.CreateBytesRequest(args);
|
||||||
|
_downloadBytesRequest.SendRequest();
|
||||||
|
_steps = ESteps.CheckRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_steps == ESteps.CheckRequest)
|
||||||
|
{
|
||||||
|
Progress = _downloadBytesRequest.DownloadProgress;
|
||||||
|
if (_downloadBytesRequest.IsDone == false)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_downloadBytesRequest.Status == EDownloadRequestStatus.Succeeded)
|
||||||
|
{
|
||||||
|
_options.DownloadUrlPolicy.OnRequestSucceeded(_downloadBytesRequest.Url);
|
||||||
|
_steps = ESteps.VerifyData;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string url = _downloadBytesRequest.Url;
|
||||||
|
long httpCode = _downloadBytesRequest.HttpCode;
|
||||||
|
string httpError = _downloadBytesRequest.HttpError;
|
||||||
|
_options.DownloadUrlPolicy.OnRequestFailed(url, httpCode, httpError);
|
||||||
|
if (IsWaitForCompletion == false && _downloadRetryController.CanRetryRequest(url, httpCode, httpError))
|
||||||
|
{
|
||||||
|
_downloadRetryController.StartRetryDelay();
|
||||||
|
_steps = ESteps.TryAgain;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
SetError(_downloadBytesRequest.Error);
|
||||||
|
YooLogger.LogError(Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_steps == ESteps.VerifyData)
|
||||||
|
{
|
||||||
|
// 注意:网络/代理/服务器异常导致内容不完整但请求仍成功
|
||||||
|
EFileVerifyResult verifyResult;
|
||||||
|
if (_options.DownloadVerifyLevel == EFileVerifyLevel.Low || _options.DownloadVerifyLevel == EFileVerifyLevel.Middle)
|
||||||
|
verifyResult = FileVerifyHelper.VerifyFile(_downloadBytesRequest.Result, _options.Bundle.FileSize, 0);
|
||||||
|
else if (_options.DownloadVerifyLevel == EFileVerifyLevel.High)
|
||||||
|
verifyResult = FileVerifyHelper.VerifyFile(_downloadBytesRequest.Result, _options.Bundle.FileSize, _options.Bundle.FileCrc);
|
||||||
|
else
|
||||||
|
throw new YooInternalException($"Unexpected verify level: {_options.DownloadVerifyLevel}.");
|
||||||
|
|
||||||
|
if (verifyResult == EFileVerifyResult.Succeed)
|
||||||
|
{
|
||||||
|
_steps = ESteps.LoadBundle;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string error = $"Verify failed. Url: '{_downloadBytesRequest.Url}' Level: {_options.DownloadVerifyLevel} Result: {verifyResult}.";
|
||||||
|
YooLogger.LogWarning(error);
|
||||||
|
|
||||||
|
if (IsWaitForCompletion == false && _downloadRetryController.HasRetriesRemaining())
|
||||||
|
{
|
||||||
|
_downloadRetryController.StartRetryDelay();
|
||||||
|
_steps = ESteps.TryAgain;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
SetError(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_steps == ESteps.LoadBundle)
|
||||||
|
{
|
||||||
|
LoadResult result = LoadFromMemory(_decryptor, _downloadBytesRequest.Result);
|
||||||
|
if (result.Succeeded == false)
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
SetError(result.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
SetResult();
|
||||||
|
BundleHandle = new RawBundleHandle(_options.Bundle, _rawBundle);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_steps == ESteps.TryAgain)
|
||||||
|
{
|
||||||
|
// 注意:失败后释放网络请求
|
||||||
|
if (_downloadBytesRequest != null)
|
||||||
|
{
|
||||||
|
_downloadBytesRequest.Dispose();
|
||||||
|
_downloadBytesRequest = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_downloadRetryController.TickRetryDelay())
|
||||||
|
{
|
||||||
|
Progress = 0f;
|
||||||
|
_steps = ESteps.DataRequest;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected override void InternalDispose()
|
||||||
|
{
|
||||||
|
if (_downloadBytesRequest != null)
|
||||||
|
{
|
||||||
|
_downloadBytesRequest.Dispose();
|
||||||
|
_downloadBytesRequest = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private LoadResult LoadFromMemory(IBundleMemoryDecryptor decryptor, byte[] fileData)
|
||||||
|
{
|
||||||
|
if (decryptor != null)
|
||||||
|
{
|
||||||
|
var args = new BundleDecryptArgs(_options.Bundle, fileData, null);
|
||||||
|
var binaryData = decryptor.GetDecryptedData(args);
|
||||||
|
if (binaryData == null)
|
||||||
|
return LoadResult.Failure($"{_options.CacheName} decryptor returned null data.");
|
||||||
|
|
||||||
|
_rawBundle = new RawBundle(binaryData);
|
||||||
|
return LoadResult.Default();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_rawBundle = new RawBundle(fileData);
|
||||||
|
return LoadResult.Default();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b30e1d41b966e63488837244e907363b
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace YooAsset
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 加载 RawBundle 的操作选项
|
||||||
|
/// </summary>
|
||||||
|
internal readonly struct LoadWebRawBundleOptions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 文件缓存名称
|
||||||
|
/// </summary>
|
||||||
|
public string CacheName { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 资源包描述
|
||||||
|
/// </summary>
|
||||||
|
public PackageBundle Bundle { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 候选下载地址列表
|
||||||
|
/// </summary>
|
||||||
|
public IReadOnlyList<string> CandidateUrls { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RawBundle 解密器
|
||||||
|
/// </summary>
|
||||||
|
public IBundleDecryptor RawBundleDecryptor { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 下载后台接口
|
||||||
|
/// </summary>
|
||||||
|
public IDownloadBackend DownloadBackend { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 下载数据校验级别
|
||||||
|
/// </summary>
|
||||||
|
public EFileVerifyLevel DownloadVerifyLevel { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 看门狗超时时间
|
||||||
|
/// </summary>
|
||||||
|
public int WatchdogTimeout { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 下载重试判定策略
|
||||||
|
/// </summary>
|
||||||
|
public IDownloadRetryPolicy DownloadRetryPolicy { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// URL 选择策略
|
||||||
|
/// </summary>
|
||||||
|
public IDownloadUrlPolicy DownloadUrlPolicy { get; }
|
||||||
|
|
||||||
|
public LoadWebRawBundleOptions(string cacheName, PackageBundle bundle, IReadOnlyList<string> candidateUrls,
|
||||||
|
IBundleDecryptor rawBundleDecryptor, IDownloadBackend downloadBackend, EFileVerifyLevel downloadVerifyLevel,
|
||||||
|
int watchdogTimeout, IDownloadRetryPolicy downloadRetryPolicy, IDownloadUrlPolicy downloadUrlPolicy)
|
||||||
|
{
|
||||||
|
CacheName = cacheName;
|
||||||
|
Bundle = bundle;
|
||||||
|
CandidateUrls = candidateUrls;
|
||||||
|
RawBundleDecryptor = rawBundleDecryptor;
|
||||||
|
DownloadBackend = downloadBackend;
|
||||||
|
DownloadVerifyLevel = downloadVerifyLevel;
|
||||||
|
WatchdogTimeout = watchdogTimeout;
|
||||||
|
DownloadRetryPolicy = downloadRetryPolicy;
|
||||||
|
DownloadUrlPolicy = downloadUrlPolicy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c3f863ac69271e243b9270f23c70b02e
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// WebGL 游戏平台加载 AssetBundle 操作
|
/// 小游戏平台加载 AssetBundle 操作
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal sealed class WGBCLoadAssetBundleOperation : BCLoadBundleOperation
|
internal sealed class WGBCLoadAssetBundleOperation : BCLoadBundleOperation
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
namespace YooAsset
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 小游戏平台加载 RawBundle 操作
|
||||||
|
/// </summary>
|
||||||
|
internal sealed class WGBCLoadRawBundleOperation : BCLoadBundleOperation
|
||||||
|
{
|
||||||
|
private enum ESteps
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
LoadBundle,
|
||||||
|
Done,
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly WebGameBundleCache _fileCache;
|
||||||
|
private readonly BCLoadBundleOptions _options;
|
||||||
|
private BCLoadBundleOperation _loadBundleOp;
|
||||||
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
internal WGBCLoadRawBundleOperation(WebGameBundleCache fileCache, BCLoadBundleOptions options)
|
||||||
|
{
|
||||||
|
_fileCache = fileCache;
|
||||||
|
_options = options;
|
||||||
|
}
|
||||||
|
protected override void InternalStart()
|
||||||
|
{
|
||||||
|
_steps = ESteps.LoadBundle;
|
||||||
|
}
|
||||||
|
protected override void InternalUpdate()
|
||||||
|
{
|
||||||
|
if (_steps == ESteps.None || _steps == ESteps.Done)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_steps == ESteps.LoadBundle)
|
||||||
|
{
|
||||||
|
if (_loadBundleOp == null)
|
||||||
|
{
|
||||||
|
var urls = _fileCache.Config.RemoteService.GetRemoteUrls(_options.Bundle.GetFileName());
|
||||||
|
var options = new LoadWebRawBundleOptions(
|
||||||
|
cacheName: _fileCache.GetType().Name,
|
||||||
|
bundle: _options.Bundle,
|
||||||
|
candidateUrls: urls,
|
||||||
|
rawBundleDecryptor: _fileCache.Config.RawBundleDecryptor,
|
||||||
|
downloadBackend: _fileCache.Config.DownloadBackend,
|
||||||
|
downloadVerifyLevel: _fileCache.Config.DownloadVerifyLevel,
|
||||||
|
watchdogTimeout: _fileCache.Config.WatchdogTimeout,
|
||||||
|
downloadRetryPolicy: _fileCache.Config.DownloadRetryPolicy,
|
||||||
|
downloadUrlPolicy: _fileCache.Config.DownloadUrlPolicy);
|
||||||
|
_loadBundleOp = new LoadWebRawBundleOperation(options);
|
||||||
|
_loadBundleOp.StartOperation();
|
||||||
|
AddChildOperation(_loadBundleOp);
|
||||||
|
}
|
||||||
|
|
||||||
|
_loadBundleOp.UpdateOperation();
|
||||||
|
Progress = _loadBundleOp.Progress;
|
||||||
|
if (_loadBundleOp.IsDone == false)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_loadBundleOp.Status == EOperationStatus.Succeeded)
|
||||||
|
{
|
||||||
|
if (_loadBundleOp.BundleHandle == null)
|
||||||
|
throw new YooInternalException("Loaded bundle handle is null.");
|
||||||
|
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
SetResult();
|
||||||
|
BundleHandle = _loadBundleOp.BundleHandle;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
SetError(_loadBundleOp.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected override void InternalWaitForCompletion()
|
||||||
|
{
|
||||||
|
if (_steps != ESteps.Done)
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
SetError("WebGL platform does not support synchronous loading.");
|
||||||
|
YooLogger.LogError(Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4024fa98150c5d4479e93ce88c6c2795
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -34,6 +34,11 @@ namespace YooAsset
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public IBundleDecryptor AssetBundleDecryptor { get; }
|
public IBundleDecryptor AssetBundleDecryptor { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RawBundle 解密器
|
||||||
|
/// </summary>
|
||||||
|
public IBundleDecryptor RawBundleDecryptor { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 远程服务接口
|
/// 远程服务接口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -54,9 +59,8 @@ namespace YooAsset
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public IDownloadUrlPolicy DownloadUrlPolicy { get; }
|
public IDownloadUrlPolicy DownloadUrlPolicy { get; }
|
||||||
|
|
||||||
public Configuration(IWebGamePlatform gamePlatform,
|
public Configuration(IWebGamePlatform gamePlatform, int watchdogTimeout, bool disableUnityWebCache,
|
||||||
int watchdogTimeout, bool disableUnityWebCache,
|
EFileVerifyLevel downloadVerifyLevel, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor, IRemoteService remoteService,
|
||||||
EFileVerifyLevel downloadVerifyLevel, IBundleDecryptor assetBundleDecryptor, IRemoteService remoteService,
|
|
||||||
IDownloadBackend downloadBackend, IDownloadRetryPolicy downloadRetryPolicy, IDownloadUrlPolicy downloadUrlPolicy)
|
IDownloadBackend downloadBackend, IDownloadRetryPolicy downloadRetryPolicy, IDownloadUrlPolicy downloadUrlPolicy)
|
||||||
{
|
{
|
||||||
GamePlatform = gamePlatform;
|
GamePlatform = gamePlatform;
|
||||||
@@ -64,6 +68,7 @@ namespace YooAsset
|
|||||||
DisableUnityWebCache = disableUnityWebCache;
|
DisableUnityWebCache = disableUnityWebCache;
|
||||||
DownloadVerifyLevel = downloadVerifyLevel;
|
DownloadVerifyLevel = downloadVerifyLevel;
|
||||||
AssetBundleDecryptor = assetBundleDecryptor;
|
AssetBundleDecryptor = assetBundleDecryptor;
|
||||||
|
RawBundleDecryptor = rawBundleDecryptor;
|
||||||
RemoteService = remoteService;
|
RemoteService = remoteService;
|
||||||
DownloadBackend = downloadBackend;
|
DownloadBackend = downloadBackend;
|
||||||
DownloadRetryPolicy = downloadRetryPolicy;
|
DownloadRetryPolicy = downloadRetryPolicy;
|
||||||
@@ -143,6 +148,11 @@ namespace YooAsset
|
|||||||
var operation = new WGBCLoadAssetBundleOperation(this, options);
|
var operation = new WGBCLoadAssetBundleOperation(this, options);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
else if (options.Bundle.GetBundleType() == (int)EBundleType.RawBundle)
|
||||||
|
{
|
||||||
|
var operation = new WGBCLoadRawBundleOperation(this, options);
|
||||||
|
return operation;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string error = $"{nameof(WebGameBundleCache)} does not support bundle type: {options.Bundle.GetBundleType()}.";
|
string error = $"{nameof(WebGameBundleCache)} does not support bundle type: {options.Bundle.GetBundleType()}.";
|
||||||
|
|||||||
@@ -55,6 +55,11 @@ namespace YooAsset
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public IBundleDecryptor AssetBundleDecryptor { get; private set; }
|
public IBundleDecryptor AssetBundleDecryptor { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义参数:RawBundle 解密器
|
||||||
|
/// </summary>
|
||||||
|
public IBundleDecryptor RawBundleDecryptor { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义参数:资源清单解密器
|
/// 自定义参数:资源清单解密器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -142,6 +147,10 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
AssetBundleDecryptor = FileSystemHelper.CastParameter<IBundleDecryptor>(paramName, value);
|
AssetBundleDecryptor = FileSystemHelper.CastParameter<IBundleDecryptor>(paramName, value);
|
||||||
}
|
}
|
||||||
|
else if (paramName == nameof(EFileSystemParameter.RawbundleDecryptor))
|
||||||
|
{
|
||||||
|
RawBundleDecryptor = FileSystemHelper.CastParameter<IBundleDecryptor>(paramName, value);
|
||||||
|
}
|
||||||
else if (paramName == nameof(EFileSystemParameter.ManifestDecryptor))
|
else if (paramName == nameof(EFileSystemParameter.ManifestDecryptor))
|
||||||
{
|
{
|
||||||
ManifestDecryptor = FileSystemHelper.CastParameter<IManifestDecryptor>(paramName, value);
|
ManifestDecryptor = FileSystemHelper.CastParameter<IManifestDecryptor>(paramName, value);
|
||||||
@@ -189,6 +198,7 @@ namespace YooAsset
|
|||||||
disableUnityWebCache: DisableUnityWebCache,
|
disableUnityWebCache: DisableUnityWebCache,
|
||||||
downloadVerifyLevel: DownloadVerifyLevel,
|
downloadVerifyLevel: DownloadVerifyLevel,
|
||||||
assetBundleDecryptor: AssetBundleDecryptor,
|
assetBundleDecryptor: AssetBundleDecryptor,
|
||||||
|
rawBundleDecryptor: RawBundleDecryptor,
|
||||||
remoteService: RemoteService,
|
remoteService: RemoteService,
|
||||||
downloadBackend: DownloadBackend,
|
downloadBackend: DownloadBackend,
|
||||||
downloadRetryPolicy: DownloadRetryPolicy,
|
downloadRetryPolicy: DownloadRetryPolicy,
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ namespace YooAsset
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 初始化
|
/// 初始化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="options">初始化配置选项</param>
|
/// <param name="options">初始化操作选项</param>
|
||||||
/// <param name="host">文件系统宿主</param>
|
/// <param name="host">文件系统宿主</param>
|
||||||
public void Initialize(InitializePackageOptions options, FileSystemHost host)
|
public void Initialize(InitializePackageOptions options, FileSystemHost host)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,12 +11,21 @@ public static class AlipayFileSystemCreater
|
|||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor decryptor)
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||||
{
|
{
|
||||||
string fileSystemClass = $"{nameof(AlipayFileSystem)},YooAsset.MiniGame";
|
string fileSystemClass = $"{nameof(AlipayFileSystem)},YooAsset.MiniGame";
|
||||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, decryptor);
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
return fileSystemParams;
|
||||||
|
}
|
||||||
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||||
|
{
|
||||||
|
string fileSystemClass = $"{nameof(AlipayFileSystem)},YooAsset.MiniGame";
|
||||||
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,12 +10,21 @@ public static class KuaiShouFileSystemCreater
|
|||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor decryptor)
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||||
{
|
{
|
||||||
string fileSystemClass = $"{nameof(KuaiShouFileSystem)},YooAsset.MiniGame";
|
string fileSystemClass = $"{nameof(KuaiShouFileSystem)},YooAsset.MiniGame";
|
||||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, decryptor);
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
return fileSystemParams;
|
||||||
|
}
|
||||||
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||||
|
{
|
||||||
|
string fileSystemClass = $"{nameof(KuaiShouFileSystem)},YooAsset.MiniGame";
|
||||||
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,12 +10,21 @@ public static class OppoFileSystemCreater
|
|||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor decryptor)
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||||
{
|
{
|
||||||
string fileSystemClass = $"{nameof(OppoFileSystem)},YooAsset.MiniGame";
|
string fileSystemClass = $"{nameof(OppoFileSystem)},YooAsset.MiniGame";
|
||||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, decryptor);
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
return fileSystemParams;
|
||||||
|
}
|
||||||
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||||
|
{
|
||||||
|
string fileSystemClass = $"{nameof(OppoFileSystem)},YooAsset.MiniGame";
|
||||||
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,12 +11,21 @@ public static class TaptapFileSystemCreater
|
|||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor decryptor)
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||||
{
|
{
|
||||||
string fileSystemClass = $"{nameof(TaptapFileSystem)},YooAsset.MiniGame";
|
string fileSystemClass = $"{nameof(TaptapFileSystem)},YooAsset.MiniGame";
|
||||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, decryptor);
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
return fileSystemParams;
|
||||||
|
}
|
||||||
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||||
|
{
|
||||||
|
string fileSystemClass = $"{nameof(TaptapFileSystem)},YooAsset.MiniGame";
|
||||||
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,12 +10,21 @@ public static class TiktokFileSystemCreater
|
|||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor decryptor)
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||||
{
|
{
|
||||||
string fileSystemClass = $"{nameof(TiktokFileSystem)},YooAsset.MiniGame";
|
string fileSystemClass = $"{nameof(TiktokFileSystem)},YooAsset.MiniGame";
|
||||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, decryptor);
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
return fileSystemParams;
|
||||||
|
}
|
||||||
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||||
|
{
|
||||||
|
string fileSystemClass = $"{nameof(TiktokFileSystem)},YooAsset.MiniGame";
|
||||||
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,12 +10,21 @@ public static class VivoFileSystemCreater
|
|||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor decryptor)
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||||
{
|
{
|
||||||
string fileSystemClass = $"{nameof(VivoFileSystem)},YooAsset.MiniGame";
|
string fileSystemClass = $"{nameof(VivoFileSystem)},YooAsset.MiniGame";
|
||||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, decryptor);
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
return fileSystemParams;
|
||||||
|
}
|
||||||
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||||
|
{
|
||||||
|
string fileSystemClass = $"{nameof(VivoFileSystem)},YooAsset.MiniGame";
|
||||||
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,12 +11,21 @@ public static class WechatFileSystemCreater
|
|||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor decryptor)
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor)
|
||||||
{
|
{
|
||||||
string fileSystemClass = $"{nameof(WechatFileSystem)},YooAsset.MiniGame";
|
string fileSystemClass = $"{nameof(WechatFileSystem)},YooAsset.MiniGame";
|
||||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, decryptor);
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
return fileSystemParams;
|
||||||
|
}
|
||||||
|
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteService remoteService, IBundleDecryptor assetBundleDecryptor, IBundleDecryptor rawBundleDecryptor)
|
||||||
|
{
|
||||||
|
string fileSystemClass = $"{nameof(WechatFileSystem)},YooAsset.MiniGame";
|
||||||
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RemoteService, remoteService);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.AssetbundleDecryptor, assetBundleDecryptor);
|
||||||
|
fileSystemParams.AddParameter(EFileSystemParameter.RawbundleDecryptor, rawBundleDecryptor);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user