mirror of https://github.com/tuyoogame/YooAsset
update runtime code
parent
5c16171781
commit
4e759134bd
|
@ -211,29 +211,29 @@ namespace YooAsset
|
||||||
/// <param name="packageVersion">更新的包裹版本</param>
|
/// <param name="packageVersion">更新的包裹版本</param>
|
||||||
/// <param name="autoActiveManifest">自动激活清单</param>
|
/// <param name="autoActiveManifest">自动激活清单</param>
|
||||||
/// <param name="timeout">超时时间(默认值:60秒)</param>
|
/// <param name="timeout">超时时间(默认值:60秒)</param>
|
||||||
public UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, bool autoSaveManifest = true, bool autoActiveManifest = true, int timeout = 60)
|
public UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, bool autoSaveManifestFile = true, int timeout = 60)
|
||||||
{
|
{
|
||||||
DebugCheckInitialize();
|
DebugCheckInitialize();
|
||||||
DebugCheckUpdateManifest();
|
DebugCheckUpdateManifest();
|
||||||
return _playModeServices.UpdatePackageManifestAsync(packageVersion, autoSaveManifest, autoActiveManifest, timeout);
|
return _playModeServices.UpdatePackageManifestAsync(packageVersion, autoSaveManifestFile, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 检查本地包裹内容的完整性
|
/// 检查包裹内容的完整性
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public CheckPackageContentsOperation CheckPackageContentsAsync()
|
public CheckContentsIntegrityOperation CheckContentsIntegrityAsync()
|
||||||
{
|
{
|
||||||
DebugCheckInitialize();
|
DebugCheckInitialize();
|
||||||
return _playModeServices.CheckPackageContentsAsync();
|
return _playModeServices.CheckContentsIntegrityAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 清理本地包裹未使用的缓存文件
|
/// 清理包裹未使用的缓存文件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ClearPackageUnusedCacheFilesOperation ClearPackageUnusedCacheFilesAsync()
|
public ClearUnusedCacheFilesOperation ClearUnusedCacheFilesAsync()
|
||||||
{
|
{
|
||||||
DebugCheckInitialize();
|
DebugCheckInitialize();
|
||||||
var operation = new ClearPackageUnusedCacheFilesOperation(this);
|
var operation = new ClearUnusedCacheFilesOperation(this);
|
||||||
OperationSystem.StartOperation(operation);
|
OperationSystem.StartOperation(operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,123 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace YooAsset
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 检查包裹内容的完整性
|
||||||
|
/// </summary>
|
||||||
|
public abstract class CheckContentsIntegrityOperation : AsyncOperationBase
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed class EditorSimulateModeCheckContentsIntegrityOperation : CheckContentsIntegrityOperation
|
||||||
|
{
|
||||||
|
internal EditorSimulateModeCheckContentsIntegrityOperation()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
internal override void Start()
|
||||||
|
{
|
||||||
|
Status = EOperationStatus.Succeed;
|
||||||
|
}
|
||||||
|
internal override void Update()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal sealed class OfflinePlayModeCheckContentsIntegrityOperation : CheckContentsIntegrityOperation
|
||||||
|
{
|
||||||
|
internal OfflinePlayModeCheckContentsIntegrityOperation()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
internal override void Start()
|
||||||
|
{
|
||||||
|
Status = EOperationStatus.Succeed;
|
||||||
|
}
|
||||||
|
internal override void Update()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal sealed class HostPlayModeCheckContentsIntegrityOperation : CheckContentsIntegrityOperation
|
||||||
|
{
|
||||||
|
private enum ESteps
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
CheckLoadedManifest,
|
||||||
|
StartVerifyOperation,
|
||||||
|
CheckVerifyOperation,
|
||||||
|
Done,
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly HostPlayModeImpl _impl;
|
||||||
|
private readonly string _packageName;
|
||||||
|
private VerifyCacheFilesOperation _verifyOperation;
|
||||||
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
internal HostPlayModeCheckContentsIntegrityOperation(HostPlayModeImpl impl, string packageName)
|
||||||
|
{
|
||||||
|
_impl = impl;
|
||||||
|
_packageName = packageName;
|
||||||
|
}
|
||||||
|
internal override void Start()
|
||||||
|
{
|
||||||
|
_steps = ESteps.CheckLoadedManifest;
|
||||||
|
}
|
||||||
|
internal override void Update()
|
||||||
|
{
|
||||||
|
if (_steps == ESteps.None || _steps == ESteps.Done)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_steps == ESteps.CheckLoadedManifest)
|
||||||
|
{
|
||||||
|
if (_impl.ActivePatchManifest == null)
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Failed;
|
||||||
|
Error = $"Not found loaded package : {_packageName}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_steps = ESteps.StartVerifyOperation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_steps == ESteps.StartVerifyOperation)
|
||||||
|
{
|
||||||
|
_verifyOperation = VerifyCacheFilesOperation.CreateOperation(_impl.ActivePatchManifest, _impl);
|
||||||
|
OperationSystem.StartOperation(_verifyOperation);
|
||||||
|
_steps = ESteps.CheckVerifyOperation;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_steps == ESteps.CheckVerifyOperation)
|
||||||
|
{
|
||||||
|
Progress = _verifyOperation.Progress;
|
||||||
|
if (_verifyOperation.IsDone == false)
|
||||||
|
return;
|
||||||
|
|
||||||
|
bool verifySucceed = true;
|
||||||
|
foreach (var verifyInfo in _verifyOperation.VerifyFailList)
|
||||||
|
{
|
||||||
|
// 注意:跳过内置资源文件
|
||||||
|
if (verifyInfo.IsBuildinFile)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
verifySucceed = false;
|
||||||
|
YooLogger.Warning($"Failed verify file : {verifyInfo.VerifyFilePath}");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (verifySucceed)
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Succeed;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Failed;
|
||||||
|
Error = $"The package resource {_packageName} content has verify failed file !";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,133 +0,0 @@
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 检查本地包裹内容的完整性
|
|
||||||
/// </summary>
|
|
||||||
public abstract class CheckPackageContentsOperation : AsyncOperationBase
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
internal sealed class EditorSimulateModeCheckPackageContentsOperation : CheckPackageContentsOperation
|
|
||||||
{
|
|
||||||
internal EditorSimulateModeCheckPackageContentsOperation()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
internal override void Start()
|
|
||||||
{
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
internal override void Update()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
internal sealed class OfflinePlayModeCheckPackageContentsOperation : CheckPackageContentsOperation
|
|
||||||
{
|
|
||||||
internal OfflinePlayModeCheckPackageContentsOperation()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
internal override void Start()
|
|
||||||
{
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
internal override void Update()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
internal sealed class HostPlayModeCheckPackageContentsOperation : CheckPackageContentsOperation
|
|
||||||
{
|
|
||||||
private enum ESteps
|
|
||||||
{
|
|
||||||
None,
|
|
||||||
CheckLoadedManifest,
|
|
||||||
StartVerifyOperation,
|
|
||||||
CheckVerifyOperation,
|
|
||||||
Done,
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly HostPlayModeImpl _impl;
|
|
||||||
private readonly string _packageName;
|
|
||||||
private CacheFilesVerifyOperation _verifyOperation;
|
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
private float _verifyTime;
|
|
||||||
|
|
||||||
internal HostPlayModeCheckPackageContentsOperation(HostPlayModeImpl impl, string packageName)
|
|
||||||
{
|
|
||||||
_impl = impl;
|
|
||||||
_packageName = packageName;
|
|
||||||
}
|
|
||||||
internal override void Start()
|
|
||||||
{
|
|
||||||
_steps = ESteps.CheckLoadedManifest;
|
|
||||||
}
|
|
||||||
internal override void Update()
|
|
||||||
{
|
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_steps == ESteps.CheckLoadedManifest)
|
|
||||||
{
|
|
||||||
if (_impl.ActivePatchManifest == null)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = $"Not found loaded package : {_packageName}";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.StartVerifyOperation;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.StartVerifyOperation)
|
|
||||||
{
|
|
||||||
#if UNITY_WEBGL
|
|
||||||
_verifyOperation = new CacheFilesVerifyWithoutThreadOperation(_impl.ActivePatchManifest, _impl);
|
|
||||||
#else
|
|
||||||
_verifyOperation = new CacheFilesVerifyWithThreadOperation(_impl.ActivePatchManifest, _impl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
OperationSystem.StartOperation(_verifyOperation);
|
|
||||||
_verifyTime = UnityEngine.Time.realtimeSinceStartup;
|
|
||||||
_steps = ESteps.CheckVerifyOperation;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.CheckVerifyOperation)
|
|
||||||
{
|
|
||||||
Progress = _verifyOperation.Progress;
|
|
||||||
if (_verifyOperation.IsDone)
|
|
||||||
{
|
|
||||||
float costTime = UnityEngine.Time.realtimeSinceStartup - _verifyTime;
|
|
||||||
YooLogger.Log($"Verify result : Success {_verifyOperation.VerifySuccessList.Count}, Fail {_verifyOperation.VerifyFailList.Count}, Elapsed time {costTime} seconds");
|
|
||||||
|
|
||||||
bool verifySucceed = true;
|
|
||||||
foreach (var verifyInfo in _verifyOperation.VerifyFailList)
|
|
||||||
{
|
|
||||||
// 注意:跳过内置资源文件
|
|
||||||
if (verifyInfo.IsBuildinFile)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
verifySucceed = false;
|
|
||||||
YooLogger.Warning($"Failed verify file : {verifyInfo.VerifyFilePath}");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (verifySucceed)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = $"The package resource {_packageName} content has verify failed file !";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -7,7 +7,7 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 清理本地包裹未使用的缓存文件
|
/// 清理本地包裹未使用的缓存文件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed class ClearPackageUnusedCacheFilesOperation : AsyncOperationBase
|
public sealed class ClearUnusedCacheFilesOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -18,11 +18,11 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly AssetsPackage _package;
|
private readonly AssetsPackage _package;
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
private List<string> _unusedCacheFilePaths;
|
private List<string> _unusedCacheFilePaths;
|
||||||
private int _unusedFileTotalCount = 0;
|
private int _unusedFileTotalCount = 0;
|
||||||
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
internal ClearPackageUnusedCacheFilesOperation(AssetsPackage package)
|
internal ClearUnusedCacheFilesOperation(AssetsPackage package)
|
||||||
{
|
{
|
||||||
_package = package;
|
_package = package;
|
||||||
}
|
}
|
|
@ -29,10 +29,10 @@ namespace YooAsset
|
||||||
private readonly List<DownloaderBase> _failedList = new List<DownloaderBase>(MAX_LOADER_COUNT);
|
private readonly List<DownloaderBase> _failedList = new List<DownloaderBase>(MAX_LOADER_COUNT);
|
||||||
|
|
||||||
// 数据相关
|
// 数据相关
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
private bool _isPause = false;
|
private bool _isPause = false;
|
||||||
private long _lastDownloadBytes = 0;
|
private long _lastDownloadBytes = 0;
|
||||||
private int _lastDownloadCount = 0;
|
private int _lastDownloadCount = 0;
|
||||||
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -101,17 +101,15 @@ namespace YooAsset
|
||||||
|
|
||||||
private readonly OfflinePlayModeImpl _impl;
|
private readonly OfflinePlayModeImpl _impl;
|
||||||
private readonly string _packageName;
|
private readonly string _packageName;
|
||||||
private BuildinPackageVersionQueryOperation _buildinPackageVersionQuery;
|
private QueryBuildinPackageVersionOperation _buildinPackageVersionQuery;
|
||||||
private BuildinManifestLoadOperation _buildinManifestLoad;
|
private LoadBuildinManifestOperation _buildinManifestLoad;
|
||||||
private CacheFilesVerifyOperation _verifyOperation;
|
private VerifyCacheFilesOperation _verifyOperation;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
private float _verifyTime;
|
|
||||||
|
|
||||||
internal OfflinePlayModeInitializationOperation(OfflinePlayModeImpl impl, string packageName)
|
internal OfflinePlayModeInitializationOperation(OfflinePlayModeImpl impl, string packageName)
|
||||||
{
|
{
|
||||||
_impl = impl;
|
_impl = impl;
|
||||||
_packageName = packageName;
|
_packageName = packageName;
|
||||||
|
|
||||||
}
|
}
|
||||||
internal override void Start()
|
internal override void Start()
|
||||||
{
|
{
|
||||||
|
@ -126,7 +124,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_buildinPackageVersionQuery == null)
|
if (_buildinPackageVersionQuery == null)
|
||||||
{
|
{
|
||||||
_buildinPackageVersionQuery = new BuildinPackageVersionQueryOperation(_packageName);
|
_buildinPackageVersionQuery = new QueryBuildinPackageVersionOperation(_packageName);
|
||||||
OperationSystem.StartOperation(_buildinPackageVersionQuery);
|
OperationSystem.StartOperation(_buildinPackageVersionQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +147,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_buildinManifestLoad == null)
|
if (_buildinManifestLoad == null)
|
||||||
{
|
{
|
||||||
_buildinManifestLoad = new BuildinManifestLoadOperation(_packageName, _buildinPackageVersionQuery.Version);
|
_buildinManifestLoad = new LoadBuildinManifestOperation(_packageName, _buildinPackageVersionQuery.Version);
|
||||||
OperationSystem.StartOperation(_buildinManifestLoad);
|
OperationSystem.StartOperation(_buildinManifestLoad);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,14 +171,8 @@ namespace YooAsset
|
||||||
|
|
||||||
if (_steps == ESteps.StartVerifyOperation)
|
if (_steps == ESteps.StartVerifyOperation)
|
||||||
{
|
{
|
||||||
#if UNITY_WEBGL
|
_verifyOperation = VerifyCacheFilesOperation.CreateOperation(_impl.ActivePatchManifest, _impl);
|
||||||
_verifyOperation = new CacheFilesVerifyWithoutThreadOperation(_impl.ActivePatchManifest, _impl);
|
|
||||||
#else
|
|
||||||
_verifyOperation = new CacheFilesVerifyWithThreadOperation(_impl.ActivePatchManifest, _impl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
OperationSystem.StartOperation(_verifyOperation);
|
OperationSystem.StartOperation(_verifyOperation);
|
||||||
_verifyTime = UnityEngine.Time.realtimeSinceStartup;
|
|
||||||
_steps = ESteps.CheckVerifyOperation;
|
_steps = ESteps.CheckVerifyOperation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,8 +183,6 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Succeed;
|
Status = EOperationStatus.Succeed;
|
||||||
float costTime = UnityEngine.Time.realtimeSinceStartup - _verifyTime;
|
|
||||||
YooLogger.Log($"Verify result : Success {_verifyOperation.VerifySuccessList.Count}, Fail {_verifyOperation.VerifyFailList.Count}, Elapsed time {costTime} seconds");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -219,13 +209,12 @@ namespace YooAsset
|
||||||
|
|
||||||
private readonly HostPlayModeImpl _impl;
|
private readonly HostPlayModeImpl _impl;
|
||||||
private readonly string _packageName;
|
private readonly string _packageName;
|
||||||
private BuildinPackageVersionQueryOperation _buildinPackageVersionQuery;
|
private QueryBuildinPackageVersionOperation _buildinPackageVersionQuery;
|
||||||
private BuildinManifestCopyOperation _buildinManifestCopy;
|
private CopyBuildinManifestOperation _buildinManifestCopy;
|
||||||
private BuildinManifestLoadOperation _buildinManifestLoad;
|
private LoadBuildinManifestOperation _buildinManifestLoad;
|
||||||
private CacheManifestLoadOperation _cacheManifestLoad;
|
private LoadCacheManifestOperation _cacheManifestLoad;
|
||||||
private CacheFilesVerifyOperation _verifyOperation;
|
private VerifyCacheFilesOperation _verifyOperation;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
private float _verifyTime;
|
|
||||||
|
|
||||||
internal HostPlayModeInitializationOperation(HostPlayModeImpl impl, string packageName)
|
internal HostPlayModeInitializationOperation(HostPlayModeImpl impl, string packageName)
|
||||||
{
|
{
|
||||||
|
@ -260,7 +249,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_cacheManifestLoad == null)
|
if (_cacheManifestLoad == null)
|
||||||
{
|
{
|
||||||
_cacheManifestLoad = new CacheManifestLoadOperation(_packageName);
|
_cacheManifestLoad = new LoadCacheManifestOperation(_packageName);
|
||||||
OperationSystem.StartOperation(_cacheManifestLoad);
|
OperationSystem.StartOperation(_cacheManifestLoad);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,7 +272,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_buildinPackageVersionQuery == null)
|
if (_buildinPackageVersionQuery == null)
|
||||||
{
|
{
|
||||||
_buildinPackageVersionQuery = new BuildinPackageVersionQueryOperation(_packageName);
|
_buildinPackageVersionQuery = new QueryBuildinPackageVersionOperation(_packageName);
|
||||||
OperationSystem.StartOperation(_buildinPackageVersionQuery);
|
OperationSystem.StartOperation(_buildinPackageVersionQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,7 +297,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_buildinManifestCopy == null)
|
if (_buildinManifestCopy == null)
|
||||||
{
|
{
|
||||||
_buildinManifestCopy = new BuildinManifestCopyOperation(_packageName, _buildinPackageVersionQuery.Version);
|
_buildinManifestCopy = new CopyBuildinManifestOperation(_packageName, _buildinPackageVersionQuery.Version);
|
||||||
OperationSystem.StartOperation(_buildinManifestCopy);
|
OperationSystem.StartOperation(_buildinManifestCopy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,7 +321,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_buildinManifestLoad == null)
|
if (_buildinManifestLoad == null)
|
||||||
{
|
{
|
||||||
_buildinManifestLoad = new BuildinManifestLoadOperation(_packageName, _buildinPackageVersionQuery.Version);
|
_buildinManifestLoad = new LoadBuildinManifestOperation(_packageName, _buildinPackageVersionQuery.Version);
|
||||||
OperationSystem.StartOperation(_buildinManifestLoad);
|
OperationSystem.StartOperation(_buildinManifestLoad);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -356,14 +345,8 @@ namespace YooAsset
|
||||||
|
|
||||||
if (_steps == ESteps.StartVerifyOperation)
|
if (_steps == ESteps.StartVerifyOperation)
|
||||||
{
|
{
|
||||||
#if UNITY_WEBGL
|
_verifyOperation = VerifyCacheFilesOperation.CreateOperation(_impl.ActivePatchManifest, _impl);
|
||||||
_verifyOperation = new CacheFilesVerifyWithoutThreadOperation(_impl.ActivePatchManifest, _impl);
|
|
||||||
#else
|
|
||||||
_verifyOperation = new CacheFilesVerifyWithThreadOperation(_impl.ActivePatchManifest, _impl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
OperationSystem.StartOperation(_verifyOperation);
|
OperationSystem.StartOperation(_verifyOperation);
|
||||||
_verifyTime = UnityEngine.Time.realtimeSinceStartup;
|
|
||||||
_steps = ESteps.CheckVerifyOperation;
|
_steps = ESteps.CheckVerifyOperation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,8 +357,6 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Succeed;
|
Status = EOperationStatus.Succeed;
|
||||||
float costTime = UnityEngine.Time.realtimeSinceStartup - _verifyTime;
|
|
||||||
YooLogger.Log($"Verify result : Success {_verifyOperation.VerifySuccessList.Count}, Fail {_verifyOperation.VerifyFailList.Count}, Elapsed time {costTime} seconds");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ba3f4fc8cf6941f4a96ab928cec547e3
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -4,7 +4,7 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 内置补丁清单复制器
|
/// 内置补丁清单复制器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal class BuildinManifestCopyOperation : AsyncOperationBase
|
internal class CopyBuildinManifestOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -20,7 +20,7 @@ namespace YooAsset
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
|
||||||
public BuildinManifestCopyOperation(string buildinPackageName, string buildinPackageVersion)
|
public CopyBuildinManifestOperation(string buildinPackageName, string buildinPackageVersion)
|
||||||
{
|
{
|
||||||
_buildinPackageName = buildinPackageName;
|
_buildinPackageName = buildinPackageName;
|
||||||
_buildinPackageVersion = buildinPackageVersion;
|
_buildinPackageVersion = buildinPackageVersion;
|
|
@ -19,15 +19,13 @@ namespace YooAsset
|
||||||
|
|
||||||
public PatchManifest Manifest { private set; get; }
|
public PatchManifest Manifest { private set; get; }
|
||||||
private readonly BufferReader _buffer;
|
private readonly BufferReader _buffer;
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
private int _patchAssetCount;
|
private int _patchAssetCount;
|
||||||
private int _patchBundleCount;
|
private int _patchBundleCount;
|
||||||
private int _progressTotalValue;
|
private int _progressTotalValue;
|
||||||
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
public DeserializeManifestOperation(byte[] binaryData)
|
public DeserializeManifestOperation(byte[] binaryData)
|
||||||
{
|
{
|
||||||
// 创建缓存器
|
|
||||||
_buffer = new BufferReader(binaryData);
|
_buffer = new BufferReader(binaryData);
|
||||||
}
|
}
|
||||||
internal override void Start()
|
internal override void Start()
|
||||||
|
@ -43,13 +41,21 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_steps == ESteps.DeserializeFileHeader)
|
if (_steps == ESteps.DeserializeFileHeader)
|
||||||
{
|
{
|
||||||
|
if (_buffer.IsValid == false)
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Failed;
|
||||||
|
Error = "Buffer is invalid !";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 读取文件标记
|
// 读取文件标记
|
||||||
uint fileSign = _buffer.ReadUInt32();
|
uint fileSign = _buffer.ReadUInt32();
|
||||||
if (fileSign != YooAssetSettings.PatchManifestFileSign)
|
if (fileSign != YooAssetSettings.PatchManifestFileSign)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = "Invalid manifest file format !";
|
Error = "The manifest file format is invalid !";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,7 +157,7 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(System.Exception e)
|
catch (System.Exception e)
|
||||||
{
|
{
|
||||||
Manifest = null;
|
Manifest = null;
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
|
@ -4,7 +4,7 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 内置补丁清单加载器
|
/// 内置补丁清单加载器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal class BuildinManifestLoadOperation : AsyncOperationBase
|
internal class LoadBuildinManifestOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -27,7 +27,7 @@ namespace YooAsset
|
||||||
public PatchManifest Manifest { private set; get; }
|
public PatchManifest Manifest { private set; get; }
|
||||||
|
|
||||||
|
|
||||||
public BuildinManifestLoadOperation(string buildinPackageName, string buildinPackageVersion)
|
public LoadBuildinManifestOperation(string buildinPackageName, string buildinPackageVersion)
|
||||||
{
|
{
|
||||||
_buildinPackageName = buildinPackageName;
|
_buildinPackageName = buildinPackageName;
|
||||||
_buildinPackageVersion = buildinPackageVersion;
|
_buildinPackageVersion = buildinPackageVersion;
|
|
@ -5,7 +5,7 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 沙盒补丁清单加载器
|
/// 沙盒补丁清单加载器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal class CacheManifestLoadOperation : AsyncOperationBase
|
internal class LoadCacheManifestOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -17,8 +17,8 @@ namespace YooAsset
|
||||||
|
|
||||||
private readonly string _packageName;
|
private readonly string _packageName;
|
||||||
private DeserializeManifestOperation _deserializer;
|
private DeserializeManifestOperation _deserializer;
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
private string _manifestFilePath;
|
private string _manifestFilePath;
|
||||||
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 加载结果
|
/// 加载结果
|
||||||
|
@ -26,7 +26,7 @@ namespace YooAsset
|
||||||
public PatchManifest Manifest { private set; get; }
|
public PatchManifest Manifest { private set; get; }
|
||||||
|
|
||||||
|
|
||||||
public CacheManifestLoadOperation(string packageName)
|
public LoadCacheManifestOperation(string packageName)
|
||||||
{
|
{
|
||||||
_packageName = packageName;
|
_packageName = packageName;
|
||||||
}
|
}
|
|
@ -4,7 +4,7 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 内置补丁清单版本查询器
|
/// 内置补丁清单版本查询器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal class BuildinPackageVersionQueryOperation : AsyncOperationBase
|
internal class QueryBuildinPackageVersionOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -24,7 +24,7 @@ namespace YooAsset
|
||||||
public string Version { private set; get; }
|
public string Version { private set; get; }
|
||||||
|
|
||||||
|
|
||||||
public BuildinPackageVersionQueryOperation(string packageName)
|
public QueryBuildinPackageVersionOperation(string packageName)
|
||||||
{
|
{
|
||||||
_packageName = packageName;
|
_packageName = packageName;
|
||||||
}
|
}
|
|
@ -9,16 +9,26 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 本地缓存文件验证
|
/// 本地缓存文件验证
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal abstract class CacheFilesVerifyOperation : AsyncOperationBase
|
internal abstract class VerifyCacheFilesOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
public List<VerifyInfo> VerifySuccessList { protected set; get; }
|
public List<VerifyInfo> VerifySuccessList { protected set; get; }
|
||||||
public List<VerifyInfo> VerifyFailList { protected set; get; }
|
public List<VerifyInfo> VerifyFailList { protected set; get; }
|
||||||
|
|
||||||
|
public static VerifyCacheFilesOperation CreateOperation(PatchManifest patchManifest, IPlayModeServices playModeServices)
|
||||||
|
{
|
||||||
|
#if UNITY_WEBGL
|
||||||
|
VerifyCacheFilesOperation operation = new VerifyCacheFilesWithoutThreadOperation(patchManifest, playModeServices);
|
||||||
|
#else
|
||||||
|
VerifyCacheFilesOperation operation = new VerifyCacheFilesWithThreadOperation(patchManifest, playModeServices);
|
||||||
|
#endif
|
||||||
|
return operation;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 本地缓存文件验证(线程版)
|
/// 本地缓存文件验证(线程版)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal class CacheFilesVerifyWithThreadOperation : CacheFilesVerifyOperation
|
internal class VerifyCacheFilesWithThreadOperation : VerifyCacheFilesOperation
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -31,15 +41,15 @@ namespace YooAsset
|
||||||
|
|
||||||
private readonly PatchManifest _patchManifest;
|
private readonly PatchManifest _patchManifest;
|
||||||
private readonly IPlayModeServices _playModeServices;
|
private readonly IPlayModeServices _playModeServices;
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
|
|
||||||
private readonly ThreadSyncContext _syncContext = new ThreadSyncContext();
|
private readonly ThreadSyncContext _syncContext = new ThreadSyncContext();
|
||||||
private List<VerifyInfo> _waitingList;
|
private List<VerifyInfo> _waitingList;
|
||||||
private List<VerifyInfo> _verifyingList;
|
private List<VerifyInfo> _verifyingList;
|
||||||
private int _verifyMaxNum;
|
private int _verifyMaxNum;
|
||||||
private int _verifyTotalCount;
|
private int _verifyTotalCount;
|
||||||
|
private float _verifyStartTime;
|
||||||
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
public CacheFilesVerifyWithThreadOperation(PatchManifest patchManifest, IPlayModeServices playModeServices)
|
public VerifyCacheFilesWithThreadOperation(PatchManifest patchManifest, IPlayModeServices playModeServices)
|
||||||
{
|
{
|
||||||
_patchManifest = patchManifest;
|
_patchManifest = patchManifest;
|
||||||
_playModeServices = playModeServices;
|
_playModeServices = playModeServices;
|
||||||
|
@ -47,6 +57,7 @@ namespace YooAsset
|
||||||
internal override void Start()
|
internal override void Start()
|
||||||
{
|
{
|
||||||
_steps = ESteps.InitVerify;
|
_steps = ESteps.InitVerify;
|
||||||
|
_verifyStartTime = UnityEngine.Time.realtimeSinceStartup;
|
||||||
}
|
}
|
||||||
internal override void Update()
|
internal override void Update()
|
||||||
{
|
{
|
||||||
|
@ -95,6 +106,8 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Succeed;
|
Status = EOperationStatus.Succeed;
|
||||||
|
float costTime = UnityEngine.Time.realtimeSinceStartup - _verifyStartTime;
|
||||||
|
YooLogger.Log($"Verify elapsed time {costTime:f1} seconds");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = _waitingList.Count - 1; i >= 0; i--)
|
for (int i = _waitingList.Count - 1; i >= 0; i--)
|
||||||
|
@ -162,7 +175,7 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 本地缓存文件验证(非线程版)
|
/// 本地缓存文件验证(非线程版)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal class CacheFilesVerifyWithoutThreadOperation : CacheFilesVerifyOperation
|
internal class VerifyCacheFilesWithoutThreadOperation : VerifyCacheFilesOperation
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -175,14 +188,14 @@ namespace YooAsset
|
||||||
|
|
||||||
private readonly PatchManifest _patchManifest;
|
private readonly PatchManifest _patchManifest;
|
||||||
private readonly IPlayModeServices _playModeServices;
|
private readonly IPlayModeServices _playModeServices;
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
|
|
||||||
private List<VerifyInfo> _waitingList;
|
private List<VerifyInfo> _waitingList;
|
||||||
private List<VerifyInfo> _verifyingList;
|
private List<VerifyInfo> _verifyingList;
|
||||||
private int _verifyMaxNum;
|
private int _verifyMaxNum;
|
||||||
private int _verifyTotalCount;
|
private int _verifyTotalCount;
|
||||||
|
private float _verifyStartTime;
|
||||||
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
public CacheFilesVerifyWithoutThreadOperation(PatchManifest patchManifest, IPlayModeServices playModeServices)
|
public VerifyCacheFilesWithoutThreadOperation(PatchManifest patchManifest, IPlayModeServices playModeServices)
|
||||||
{
|
{
|
||||||
_patchManifest = patchManifest;
|
_patchManifest = patchManifest;
|
||||||
_playModeServices = playModeServices;
|
_playModeServices = playModeServices;
|
||||||
|
@ -190,6 +203,7 @@ namespace YooAsset
|
||||||
internal override void Start()
|
internal override void Start()
|
||||||
{
|
{
|
||||||
_steps = ESteps.InitVerify;
|
_steps = ESteps.InitVerify;
|
||||||
|
_verifyStartTime = UnityEngine.Time.realtimeSinceStartup;
|
||||||
}
|
}
|
||||||
internal override void Update()
|
internal override void Update()
|
||||||
{
|
{
|
||||||
|
@ -232,6 +246,8 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Succeed;
|
Status = EOperationStatus.Succeed;
|
||||||
|
float costTime = UnityEngine.Time.realtimeSinceStartup - _verifyStartTime;
|
||||||
|
YooLogger.Log($"Verify elapsed time {costTime:f1} seconds");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = _waitingList.Count - 1; i >= 0; i--)
|
for (int i = _waitingList.Count - 1; i >= 0; i--)
|
|
@ -10,131 +10,20 @@ namespace YooAsset
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class UpdatePackageManifestOperation : AsyncOperationBase
|
public abstract class UpdatePackageManifestOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
internal IPlayModeServices _playModeServices;
|
|
||||||
internal PatchManifest _patchManifest;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否发现了新的补丁清单
|
/// 发现了新的清单
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool FoundNewManifest { protected set; get; } = false;
|
public bool FoundNewManifest { protected set; get; } = false;
|
||||||
|
|
||||||
#region 资源下载
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建补丁下载器,用于下载更新资源标签指定的资源包文件
|
/// 手动保存清单文件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="tag">资源标签</param>
|
public virtual void SaveManifestFile() { }
|
||||||
/// <param name="downloadingMaxNumber">同时下载的最大文件数</param>
|
|
||||||
/// <param name="failedTryAgain">下载失败的重试次数</param>
|
|
||||||
/// <param name="timeout">超时时间</param>
|
|
||||||
public PatchDownloaderOperation CreatePatchDownloader(string tag, int downloadingMaxNumber, int failedTryAgain, int timeout = 60)
|
|
||||||
{
|
|
||||||
if (Status != EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
YooLogger.Error($"Please check { nameof(UpdatePackageManifestOperation)} status before call downloader !");
|
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
return _playModeServices.CreatePatchDownloaderByTags(_patchManifest, new string[] { tag }, downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建补丁下载器,用于下载更新资源标签指定的资源包文件
|
/// 还原补丁清单
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="tags">资源标签列表</param>
|
public virtual void RevertManifest() { }
|
||||||
/// <param name="downloadingMaxNumber">同时下载的最大文件数</param>
|
|
||||||
/// <param name="failedTryAgain">下载失败的重试次数</param>
|
|
||||||
/// <param name="timeout">超时时间</param>
|
|
||||||
public PatchDownloaderOperation CreatePatchDownloader(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout = 60)
|
|
||||||
{
|
|
||||||
if (Status != EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
YooLogger.Error($"Please check { nameof(UpdatePackageManifestOperation)} status before call downloader !");
|
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
return _playModeServices.CreatePatchDownloaderByTags(_patchManifest, tags, downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建补丁下载器,用于下载更新当前资源版本所有的资源包文件
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="downloadingMaxNumber">同时下载的最大文件数</param>
|
|
||||||
/// <param name="failedTryAgain">下载失败的重试次数</param>
|
|
||||||
/// <param name="timeout">超时时间</param>
|
|
||||||
public PatchDownloaderOperation CreatePatchDownloader(int downloadingMaxNumber, int failedTryAgain, int timeout = 60)
|
|
||||||
{
|
|
||||||
if (Status != EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
YooLogger.Error($"Please check { nameof(UpdatePackageManifestOperation)} status before call downloader !");
|
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
return _playModeServices.CreatePatchDownloaderByAll(_patchManifest, downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建补丁下载器,用于下载更新指定的资源列表依赖的资源包文件
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="assetInfos">资源信息列表</param>
|
|
||||||
/// <param name="downloadingMaxNumber">同时下载的最大文件数</param>
|
|
||||||
/// <param name="failedTryAgain">下载失败的重试次数</param>
|
|
||||||
/// <param name="timeout">超时时间</param>
|
|
||||||
public PatchDownloaderOperation CreateBundleDownloader(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout = 60)
|
|
||||||
{
|
|
||||||
if (Status != EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
YooLogger.Error($"Please check { nameof(UpdatePackageManifestOperation)} status before call downloader !");
|
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
return _playModeServices.CreatePatchDownloaderByPaths(_patchManifest, assetInfos, downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region 资源解压
|
|
||||||
/// <summary>
|
|
||||||
/// 创建补丁解压器
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="tag">资源标签</param>
|
|
||||||
/// <param name="unpackingMaxNumber">同时解压的最大文件数</param>
|
|
||||||
/// <param name="failedTryAgain">解压失败的重试次数</param>
|
|
||||||
public PatchUnpackerOperation CreatePatchUnpacker(string tag, int unpackingMaxNumber, int failedTryAgain)
|
|
||||||
{
|
|
||||||
if (Status != EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
YooLogger.Error($"Please check { nameof(UpdatePackageManifestOperation)} status before call unpacker !");
|
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(unpackingMaxNumber, failedTryAgain, int.MaxValue);
|
|
||||||
}
|
|
||||||
return _playModeServices.CreatePatchUnpackerByTags(_patchManifest, new string[] { tag }, unpackingMaxNumber, failedTryAgain, int.MaxValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建补丁解压器
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="tags">资源标签列表</param>
|
|
||||||
/// <param name="unpackingMaxNumber">同时解压的最大文件数</param>
|
|
||||||
/// <param name="failedTryAgain">解压失败的重试次数</param>
|
|
||||||
public PatchUnpackerOperation CreatePatchUnpacker(string[] tags, int unpackingMaxNumber, int failedTryAgain)
|
|
||||||
{
|
|
||||||
if (Status != EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
YooLogger.Error($"Please check { nameof(UpdatePackageManifestOperation)} status before call unpacker !");
|
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(unpackingMaxNumber, failedTryAgain, int.MaxValue);
|
|
||||||
}
|
|
||||||
return _playModeServices.CreatePatchUnpackerByTags(_patchManifest, tags, unpackingMaxNumber, failedTryAgain, int.MaxValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建补丁解压器
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="unpackingMaxNumber">同时解压的最大文件数</param>
|
|
||||||
/// <param name="failedTryAgain">解压失败的重试次数</param>
|
|
||||||
public PatchUnpackerOperation CreatePatchUnpacker(int unpackingMaxNumber, int failedTryAgain)
|
|
||||||
{
|
|
||||||
if (Status != EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
YooLogger.Error($"Please check { nameof(UpdatePackageManifestOperation)} status before call unpacker !");
|
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(unpackingMaxNumber, failedTryAgain, int.MaxValue);
|
|
||||||
}
|
|
||||||
return _playModeServices.CreatePatchUnpackerByAll(_patchManifest, unpackingMaxNumber, failedTryAgain, int.MaxValue);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -142,9 +31,8 @@ namespace YooAsset
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal sealed class EditorPlayModeUpdatePackageManifestOperation : UpdatePackageManifestOperation
|
internal sealed class EditorPlayModeUpdatePackageManifestOperation : UpdatePackageManifestOperation
|
||||||
{
|
{
|
||||||
public EditorPlayModeUpdatePackageManifestOperation(EditorSimulateModeImpl impl)
|
public EditorPlayModeUpdatePackageManifestOperation()
|
||||||
{
|
{
|
||||||
_playModeServices = impl;
|
|
||||||
}
|
}
|
||||||
internal override void Start()
|
internal override void Start()
|
||||||
{
|
{
|
||||||
|
@ -160,9 +48,8 @@ namespace YooAsset
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal sealed class OfflinePlayModeUpdatePackageManifestOperation : UpdatePackageManifestOperation
|
internal sealed class OfflinePlayModeUpdatePackageManifestOperation : UpdatePackageManifestOperation
|
||||||
{
|
{
|
||||||
public OfflinePlayModeUpdatePackageManifestOperation(OfflinePlayModeImpl impl)
|
public OfflinePlayModeUpdatePackageManifestOperation()
|
||||||
{
|
{
|
||||||
_playModeServices = impl;
|
|
||||||
}
|
}
|
||||||
internal override void Start()
|
internal override void Start()
|
||||||
{
|
{
|
||||||
|
@ -197,27 +84,24 @@ namespace YooAsset
|
||||||
private readonly HostPlayModeImpl _impl;
|
private readonly HostPlayModeImpl _impl;
|
||||||
private readonly string _packageName;
|
private readonly string _packageName;
|
||||||
private readonly string _packageVersion;
|
private readonly string _packageVersion;
|
||||||
private bool _autoSaveManifest;
|
private readonly bool _autoSaveManifestFile;
|
||||||
private bool _autoActiveManifest;
|
|
||||||
private readonly int _timeout;
|
private readonly int _timeout;
|
||||||
private UnityWebDataRequester _downloader1;
|
private UnityWebDataRequester _downloader1;
|
||||||
private UnityWebDataRequester _downloader2;
|
private UnityWebDataRequester _downloader2;
|
||||||
private DeserializeManifestOperation _deserializer;
|
private DeserializeManifestOperation _deserializer;
|
||||||
private CacheFilesVerifyOperation _verifyOperation;
|
private VerifyCacheFilesOperation _verifyOperation;
|
||||||
|
|
||||||
|
internal PatchManifest _prePatchManifest;
|
||||||
private string _cacheManifestHash;
|
private string _cacheManifestHash;
|
||||||
|
private byte[] _fileBytesData = null;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
private byte[] _fileBytes = null;
|
|
||||||
private float _verifyTime;
|
|
||||||
|
|
||||||
internal HostPlayModeUpdatePackageManifestOperation(HostPlayModeImpl impl, string packageName, string packageVersion, bool autoSaveManifest, bool autoActiveManifest, int timeout)
|
internal HostPlayModeUpdatePackageManifestOperation(HostPlayModeImpl impl, string packageName, string packageVersion, bool autoSaveManifestFile, int timeout)
|
||||||
{
|
{
|
||||||
_playModeServices = impl;
|
|
||||||
_impl = impl;
|
_impl = impl;
|
||||||
_packageName = packageName;
|
_packageName = packageName;
|
||||||
_packageVersion = packageVersion;
|
_packageVersion = packageVersion;
|
||||||
_autoSaveManifest = autoSaveManifest;
|
_autoSaveManifestFile = autoSaveManifestFile;
|
||||||
_autoActiveManifest = autoActiveManifest;
|
|
||||||
_timeout = timeout;
|
_timeout = timeout;
|
||||||
}
|
}
|
||||||
internal override void Start()
|
internal override void Start()
|
||||||
|
@ -271,7 +155,6 @@ namespace YooAsset
|
||||||
if (_cacheManifestHash == webManifestHash)
|
if (_cacheManifestHash == webManifestHash)
|
||||||
{
|
{
|
||||||
YooLogger.Log($"Not found new package : {_packageName}");
|
YooLogger.Log($"Not found new package : {_packageName}");
|
||||||
_patchManifest = _impl.ActivePatchManifest;
|
|
||||||
FoundNewManifest = false;
|
FoundNewManifest = false;
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Succeed;
|
Status = EOperationStatus.Succeed;
|
||||||
|
@ -310,16 +193,13 @@ namespace YooAsset
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
byte[] bytesData = _downloader2.GetData();
|
byte[] bytesData = _downloader2.GetData();
|
||||||
|
if (_autoSaveManifestFile)
|
||||||
// 保存文件到沙盒内
|
|
||||||
if (_autoSaveManifest)
|
|
||||||
{
|
{
|
||||||
string savePath = PersistentHelper.GetCacheManifestFilePath(_packageName);
|
SaveManifestFileInternal(bytesData);
|
||||||
FileUtility.CreateFile(savePath, bytesData);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_fileBytes = bytesData;
|
_fileBytesData = bytesData;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 解析二进制数据
|
// 解析二进制数据
|
||||||
|
@ -334,16 +214,13 @@ namespace YooAsset
|
||||||
if (_steps == ESteps.CheckDeserializeWebManifest)
|
if (_steps == ESteps.CheckDeserializeWebManifest)
|
||||||
{
|
{
|
||||||
Progress = _deserializer.Progress;
|
Progress = _deserializer.Progress;
|
||||||
if (_deserializer.IsDone)
|
if (_deserializer.IsDone == false)
|
||||||
{
|
return;
|
||||||
|
|
||||||
if (_deserializer.Status == EOperationStatus.Succeed)
|
if (_deserializer.Status == EOperationStatus.Succeed)
|
||||||
{
|
{
|
||||||
if (_autoActiveManifest)
|
_prePatchManifest = _impl.ActivePatchManifest;
|
||||||
{
|
|
||||||
_impl.ActivePatchManifest = _deserializer.Manifest;
|
_impl.ActivePatchManifest = _deserializer.Manifest;
|
||||||
}
|
|
||||||
|
|
||||||
_patchManifest = _deserializer.Manifest;
|
|
||||||
_steps = ESteps.StartVerifyOperation;
|
_steps = ESteps.StartVerifyOperation;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -353,18 +230,11 @@ namespace YooAsset
|
||||||
Error = _deserializer.Error;
|
Error = _deserializer.Error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.StartVerifyOperation)
|
if (_steps == ESteps.StartVerifyOperation)
|
||||||
{
|
{
|
||||||
#if UNITY_WEBGL
|
_verifyOperation = VerifyCacheFilesOperation.CreateOperation(_deserializer.Manifest, _impl);
|
||||||
_verifyOperation = new CacheFilesVerifyWithoutThreadOperation(_deserializer.Manifest, _impl);
|
|
||||||
#else
|
|
||||||
_verifyOperation = new CacheFilesVerifyWithThreadOperation(_deserializer.Manifest, _impl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
OperationSystem.StartOperation(_verifyOperation);
|
OperationSystem.StartOperation(_verifyOperation);
|
||||||
_verifyTime = UnityEngine.Time.realtimeSinceStartup;
|
|
||||||
_steps = ESteps.CheckVerifyOperation;
|
_steps = ESteps.CheckVerifyOperation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -375,8 +245,6 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Succeed;
|
Status = EOperationStatus.Succeed;
|
||||||
float costTime = UnityEngine.Time.realtimeSinceStartup - _verifyTime;
|
|
||||||
YooLogger.Log($"Verify result : Success {_verifyOperation.VerifySuccessList.Count}, Fail {_verifyOperation.VerifyFailList.Count}, Elapsed time {costTime} seconds");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -384,37 +252,50 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 手动保存清单文件
|
/// 手动保存清单文件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void SaveManifest()
|
public override void SaveManifestFile()
|
||||||
{
|
{
|
||||||
if (_autoSaveManifest == false)
|
if (IsDone == false)
|
||||||
{
|
{
|
||||||
if (_fileBytes != null)
|
YooLogger.Warning($"{nameof(UpdatePackageManifestOperation)} is not done !");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Status == EOperationStatus.Succeed)
|
||||||
|
{
|
||||||
|
if (_fileBytesData != null)
|
||||||
|
{
|
||||||
|
SaveManifestFileInternal(_fileBytesData);
|
||||||
|
_fileBytesData = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 还原补丁清单
|
||||||
|
/// </summary>
|
||||||
|
public override void RevertManifest()
|
||||||
|
{
|
||||||
|
if (IsDone == false)
|
||||||
|
{
|
||||||
|
YooLogger.Warning($"{nameof(UpdatePackageManifestOperation)} is not done !");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Status == EOperationStatus.Succeed)
|
||||||
|
{
|
||||||
|
if (_prePatchManifest != null)
|
||||||
|
{
|
||||||
|
_impl.ActivePatchManifest = _prePatchManifest;
|
||||||
|
_prePatchManifest = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SaveManifestFileInternal(byte[] bytesData)
|
||||||
{
|
{
|
||||||
_autoSaveManifest = true;
|
|
||||||
string savePath = PersistentHelper.GetCacheManifestFilePath(_packageName);
|
string savePath = PersistentHelper.GetCacheManifestFilePath(_packageName);
|
||||||
FileUtility.CreateFile(savePath, _fileBytes);
|
FileUtility.CreateFile(savePath, bytesData);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 手动激活清单文件
|
|
||||||
/// </summary>
|
|
||||||
public void ActiveManifest()
|
|
||||||
{
|
|
||||||
if (_autoActiveManifest == false)
|
|
||||||
{
|
|
||||||
if (_deserializer.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
_autoActiveManifest = true;
|
|
||||||
_impl.ActivePatchManifest = _deserializer.Manifest;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取补丁清单请求地址
|
|
||||||
/// </summary>
|
|
||||||
private string GetPatchManifestRequestURL(string fileName)
|
private string GetPatchManifestRequestURL(string fileName)
|
||||||
{
|
{
|
||||||
// 轮流返回请求地址
|
// 轮流返回请求地址
|
||||||
|
|
|
@ -51,8 +51,8 @@ namespace YooAsset
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
LoadStaticVersion,
|
LoadPackageVersion,
|
||||||
CheckStaticVersion,
|
CheckLoadPackageVersion,
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,24 +74,24 @@ namespace YooAsset
|
||||||
internal override void Start()
|
internal override void Start()
|
||||||
{
|
{
|
||||||
RequestCount++;
|
RequestCount++;
|
||||||
_steps = ESteps.LoadStaticVersion;
|
_steps = ESteps.LoadPackageVersion;
|
||||||
}
|
}
|
||||||
internal override void Update()
|
internal override void Update()
|
||||||
{
|
{
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
if (_steps == ESteps.None || _steps == ESteps.Done)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_steps == ESteps.LoadStaticVersion)
|
if (_steps == ESteps.LoadPackageVersion)
|
||||||
{
|
{
|
||||||
string fileName = YooAssetSettingsData.GetPatchManifestVersionFileName(_packageName);
|
string fileName = YooAssetSettingsData.GetPatchManifestVersionFileName(_packageName);
|
||||||
string webURL = GetStaticVersionRequestURL(fileName);
|
string webURL = GetPackageVersionRequestURL(fileName);
|
||||||
YooLogger.Log($"Beginning to request package version : {webURL}");
|
YooLogger.Log($"Beginning to request package version : {webURL}");
|
||||||
_downloader = new UnityWebDataRequester();
|
_downloader = new UnityWebDataRequester();
|
||||||
_downloader.SendRequest(webURL, _timeout);
|
_downloader.SendRequest(webURL, _timeout);
|
||||||
_steps = ESteps.CheckStaticVersion;
|
_steps = ESteps.CheckLoadPackageVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_steps == ESteps.CheckStaticVersion)
|
if (_steps == ESteps.CheckLoadPackageVersion)
|
||||||
{
|
{
|
||||||
Progress = _downloader.Progress();
|
Progress = _downloader.Progress();
|
||||||
if (_downloader.IsDone() == false)
|
if (_downloader.IsDone() == false)
|
||||||
|
@ -123,7 +123,7 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetStaticVersionRequestURL(string fileName)
|
private string GetPackageVersionRequestURL(string fileName)
|
||||||
{
|
{
|
||||||
string url;
|
string url;
|
||||||
|
|
||||||
|
|
|
@ -52,59 +52,36 @@ namespace YooAsset
|
||||||
OperationSystem.StartOperation(operation);
|
OperationSystem.StartOperation(operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
UpdatePackageManifestOperation IPlayModeServices.UpdatePackageManifestAsync(string packageVersion, bool autoSaveManifest, bool autoActiveManifest, int timeout)
|
UpdatePackageManifestOperation IPlayModeServices.UpdatePackageManifestAsync(string packageVersion, bool autoSaveManifestFile, int timeout)
|
||||||
{
|
{
|
||||||
var operation = new EditorPlayModeUpdatePackageManifestOperation(this);
|
var operation = new EditorPlayModeUpdatePackageManifestOperation();
|
||||||
OperationSystem.StartOperation(operation);
|
OperationSystem.StartOperation(operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
CheckPackageContentsOperation IPlayModeServices.CheckPackageContentsAsync()
|
CheckContentsIntegrityOperation IPlayModeServices.CheckContentsIntegrityAsync()
|
||||||
{
|
{
|
||||||
var operation = new EditorSimulateModeCheckPackageContentsOperation();
|
var operation = new EditorSimulateModeCheckContentsIntegrityOperation();
|
||||||
OperationSystem.StartOperation(operation);
|
OperationSystem.StartOperation(operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByAll(PatchManifest patchManifest, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout)
|
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByTags(PatchManifest patchManifest, string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByPaths(PatchManifest patchManifest, AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByAll(PatchManifest patchManifest, int upackingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout)
|
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByTags(PatchManifest patchManifest, string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
||||||
|
|
|
@ -109,25 +109,19 @@ namespace YooAsset
|
||||||
OperationSystem.StartOperation(operation);
|
OperationSystem.StartOperation(operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
UpdatePackageManifestOperation IPlayModeServices.UpdatePackageManifestAsync(string packageVersion, bool autoSaveManifest, bool autoActiveManifest, int timeout)
|
UpdatePackageManifestOperation IPlayModeServices.UpdatePackageManifestAsync(string packageVersion, bool autoSaveManifestFile, int timeout)
|
||||||
{
|
{
|
||||||
var operation = new HostPlayModeUpdatePackageManifestOperation(this, _packageName, packageVersion, autoSaveManifest, autoActiveManifest, timeout);
|
var operation = new HostPlayModeUpdatePackageManifestOperation(this, _packageName, packageVersion, autoSaveManifestFile, timeout);
|
||||||
OperationSystem.StartOperation(operation);
|
OperationSystem.StartOperation(operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
CheckPackageContentsOperation IPlayModeServices.CheckPackageContentsAsync()
|
CheckContentsIntegrityOperation IPlayModeServices.CheckContentsIntegrityAsync()
|
||||||
{
|
{
|
||||||
var operation = new HostPlayModeCheckPackageContentsOperation(this, _packageName);
|
var operation = new HostPlayModeCheckContentsIntegrityOperation(this, _packageName);
|
||||||
OperationSystem.StartOperation(operation);
|
OperationSystem.StartOperation(operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByAll(PatchManifest patchManifest, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
List<BundleInfo> downloadList = GetDownloadListByAll(patchManifest);
|
|
||||||
var operation = new PatchDownloaderOperation(downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout)
|
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> downloadList = GetDownloadListByAll(_activePatchManifest);
|
List<BundleInfo> downloadList = GetDownloadListByAll(_activePatchManifest);
|
||||||
|
@ -153,12 +147,6 @@ namespace YooAsset
|
||||||
return ConvertToDownloadList(downloadList);
|
return ConvertToDownloadList(downloadList);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByTags(PatchManifest patchManifest, string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
List<BundleInfo> downloadList = GetDownloadListByTags(patchManifest, tags);
|
|
||||||
var operation = new PatchDownloaderOperation(downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> downloadList = GetDownloadListByTags(_activePatchManifest, tags);
|
List<BundleInfo> downloadList = GetDownloadListByTags(_activePatchManifest, tags);
|
||||||
|
@ -196,12 +184,6 @@ namespace YooAsset
|
||||||
return ConvertToDownloadList(downloadList);
|
return ConvertToDownloadList(downloadList);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByPaths(PatchManifest patchManifest, AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
List<BundleInfo> downloadList = GetDownloadListByPaths(patchManifest, assetInfos);
|
|
||||||
var operation = new PatchDownloaderOperation(downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> downloadList = GetDownloadListByPaths(_activePatchManifest, assetInfos);
|
List<BundleInfo> downloadList = GetDownloadListByPaths(_activePatchManifest, assetInfos);
|
||||||
|
@ -251,12 +233,6 @@ namespace YooAsset
|
||||||
return ConvertToDownloadList(downloadList);
|
return ConvertToDownloadList(downloadList);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByAll(PatchManifest patchManifest, int upackingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
List<BundleInfo> unpcakList = GetUnpackListByAll(patchManifest);
|
|
||||||
var operation = new PatchUnpackerOperation(unpcakList, upackingMaxNumber, failedTryAgain, timeout);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout)
|
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> unpcakList = GetUnpackListByAll(_activePatchManifest);
|
List<BundleInfo> unpcakList = GetUnpackListByAll(_activePatchManifest);
|
||||||
|
@ -281,12 +257,6 @@ namespace YooAsset
|
||||||
return ConvertToUnpackList(downloadList);
|
return ConvertToUnpackList(downloadList);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByTags(PatchManifest patchManifest, string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
List<BundleInfo> unpcakList = GetUnpackListByTags(patchManifest, tags);
|
|
||||||
var operation = new PatchUnpackerOperation(unpcakList, upackingMaxNumber, failedTryAgain, timeout);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> unpcakList = GetUnpackListByTags(_activePatchManifest, tags);
|
List<BundleInfo> unpcakList = GetUnpackListByTags(_activePatchManifest, tags);
|
||||||
|
|
|
@ -52,59 +52,36 @@ namespace YooAsset
|
||||||
OperationSystem.StartOperation(operation);
|
OperationSystem.StartOperation(operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
UpdatePackageManifestOperation IPlayModeServices.UpdatePackageManifestAsync(string packageVersion, bool autoSaveManifest, bool autoActiveManifest, int timeout)
|
UpdatePackageManifestOperation IPlayModeServices.UpdatePackageManifestAsync(string packageVersion, bool autoSaveManifestFile, int timeout)
|
||||||
{
|
{
|
||||||
var operation = new OfflinePlayModeUpdatePackageManifestOperation(this);
|
var operation = new OfflinePlayModeUpdatePackageManifestOperation();
|
||||||
OperationSystem.StartOperation(operation);
|
OperationSystem.StartOperation(operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
CheckPackageContentsOperation IPlayModeServices.CheckPackageContentsAsync()
|
CheckContentsIntegrityOperation IPlayModeServices.CheckContentsIntegrityAsync()
|
||||||
{
|
{
|
||||||
var operation = new OfflinePlayModeCheckPackageContentsOperation();
|
var operation = new OfflinePlayModeCheckContentsIntegrityOperation();
|
||||||
OperationSystem.StartOperation(operation);
|
OperationSystem.StartOperation(operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByAll(PatchManifest patchManifest, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout)
|
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByTags(PatchManifest patchManifest, string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByPaths(PatchManifest patchManifest, AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
PatchDownloaderOperation IPlayModeServices.CreatePatchDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
return PatchDownloaderOperation.CreateEmptyDownloader(downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByAll(PatchManifest patchManifest, int upackingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout)
|
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByTags(PatchManifest patchManifest, string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
|
||||||
{
|
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
|
||||||
}
|
|
||||||
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
PatchUnpackerOperation IPlayModeServices.CreatePatchUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
return PatchUnpackerOperation.CreateEmptyUnpacker(upackingMaxNumber, failedTryAgain, timeout);
|
||||||
|
|
|
@ -26,25 +26,20 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 向网络端请求并更新补丁清单
|
/// 向网络端请求并更新补丁清单
|
||||||
/// </summary>
|
/// </summary>
|
||||||
UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, bool autoSaveManifest, bool autoActiveManifest, int timeout);
|
UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, bool autoSaveManifestFile, int timeout);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 检查本地包裹内容的完整性
|
/// 检查包裹内容的完整性
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CheckPackageContentsOperation CheckPackageContentsAsync();
|
CheckContentsIntegrityOperation CheckContentsIntegrityAsync();
|
||||||
|
|
||||||
// 下载相关方法
|
// 下载相关方法
|
||||||
PatchDownloaderOperation CreatePatchDownloaderByAll(PatchManifest patchManifest, int downloadingMaxNumber, int failedTryAgain, int timeout);
|
|
||||||
PatchDownloaderOperation CreatePatchDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout);
|
PatchDownloaderOperation CreatePatchDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout);
|
||||||
PatchDownloaderOperation CreatePatchDownloaderByTags(PatchManifest patchManifest, string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout);
|
|
||||||
PatchDownloaderOperation CreatePatchDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout);
|
PatchDownloaderOperation CreatePatchDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout);
|
||||||
PatchDownloaderOperation CreatePatchDownloaderByPaths(PatchManifest patchManifest, AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout);
|
|
||||||
PatchDownloaderOperation CreatePatchDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout);
|
PatchDownloaderOperation CreatePatchDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout);
|
||||||
|
|
||||||
// 解压相关方法
|
// 解压相关方法
|
||||||
PatchUnpackerOperation CreatePatchUnpackerByAll(PatchManifest patchManifest, int upackingMaxNumber, int failedTryAgain, int timeout);
|
|
||||||
PatchUnpackerOperation CreatePatchUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout);
|
PatchUnpackerOperation CreatePatchUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout);
|
||||||
PatchUnpackerOperation CreatePatchUnpackerByTags(PatchManifest patchManifest, string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout);
|
|
||||||
PatchUnpackerOperation CreatePatchUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout);
|
PatchUnpackerOperation CreatePatchUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -16,6 +16,20 @@ namespace YooAsset
|
||||||
_buffer = data;
|
_buffer = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否有效
|
||||||
|
/// </summary>
|
||||||
|
public bool IsValid
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_buffer == null || _buffer.Length == 0)
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 缓冲区容量
|
/// 缓冲区容量
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue