Update runtime logic
This commit is contained in:
@@ -89,12 +89,13 @@ namespace YooAsset
|
||||
}
|
||||
|
||||
private readonly OfflinePlayModeImpl _impl;
|
||||
private readonly AppManifestLoader _appManifestLoader = new AppManifestLoader();
|
||||
private AppManifestLoader _appManifestLoader;
|
||||
private ESteps _steps = ESteps.None;
|
||||
|
||||
internal OfflinePlayModeInitializationOperation(OfflinePlayModeImpl impl)
|
||||
internal OfflinePlayModeInitializationOperation(OfflinePlayModeImpl impl, string buildinPackageName)
|
||||
{
|
||||
_impl = impl;
|
||||
_appManifestLoader = new AppManifestLoader(buildinPackageName);
|
||||
}
|
||||
internal override void Start()
|
||||
{
|
||||
@@ -136,51 +137,32 @@ namespace YooAsset
|
||||
private enum ESteps
|
||||
{
|
||||
None,
|
||||
InitCache,
|
||||
LoadManifest,
|
||||
CopyManifest,
|
||||
Done,
|
||||
}
|
||||
|
||||
private readonly HostPlayModeImpl _impl;
|
||||
private readonly AppManifestLoader _appManifestLoader = new AppManifestLoader();
|
||||
private readonly AppManifestCopyer _appManifestCopyer = new AppManifestCopyer();
|
||||
private readonly string _buildinPackageName;
|
||||
private AppManifestLoader _appManifestLoader;
|
||||
private AppManifestCopyer _appManifestCopyer;
|
||||
private ESteps _steps = ESteps.None;
|
||||
|
||||
internal HostPlayModeInitializationOperation(HostPlayModeImpl impl)
|
||||
internal HostPlayModeInitializationOperation(HostPlayModeImpl impl, string buildinPackageName)
|
||||
{
|
||||
_impl = impl;
|
||||
_buildinPackageName = buildinPackageName;
|
||||
_appManifestLoader = new AppManifestLoader(buildinPackageName);
|
||||
}
|
||||
internal override void Start()
|
||||
{
|
||||
_steps = ESteps.InitCache;
|
||||
_steps = ESteps.LoadManifest;
|
||||
}
|
||||
internal override void Update()
|
||||
{
|
||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
||||
return;
|
||||
|
||||
if (_steps == ESteps.InitCache)
|
||||
{
|
||||
// 每次启动时比对APP版本号是否一致
|
||||
CacheData cacheData = CacheData.LoadCache();
|
||||
if (cacheData.CacheAppVersion != Application.version)
|
||||
{
|
||||
YooLogger.Warning($"Cache is dirty ! Cache application version is {cacheData.CacheAppVersion}, Current application version is {Application.version}");
|
||||
|
||||
// 注意:在覆盖安装的时候,会保留APP沙盒目录,可以选择清空缓存目录
|
||||
if (_impl.ClearCacheWhenDirty)
|
||||
{
|
||||
YooLogger.Warning("Clear cache files.");
|
||||
SandboxHelper.DeleteCacheFolder();
|
||||
}
|
||||
|
||||
// 更新缓存文件
|
||||
CacheData.UpdateCache();
|
||||
}
|
||||
_steps = ESteps.LoadManifest;
|
||||
}
|
||||
|
||||
if (_steps == ESteps.LoadManifest)
|
||||
{
|
||||
_appManifestLoader.Update();
|
||||
@@ -198,7 +180,7 @@ namespace YooAsset
|
||||
{
|
||||
_impl.SetAppPatchManifest(_appManifestLoader.Result);
|
||||
_impl.SetLocalPatchManifest(_appManifestLoader.Result);
|
||||
_appManifestCopyer.Init(_appManifestLoader.StaticVersion);
|
||||
_appManifestCopyer = new AppManifestCopyer(_buildinPackageName, _appManifestLoader.BuildinPackageCRC);
|
||||
_steps = ESteps.CopyManifest;
|
||||
}
|
||||
}
|
||||
@@ -239,6 +221,7 @@ namespace YooAsset
|
||||
Done,
|
||||
}
|
||||
|
||||
private string _buildinPackageName;
|
||||
private ESteps _steps = ESteps.LoadStaticVersion;
|
||||
private UnityWebDataRequester _downloader1;
|
||||
private UnityWebDataRequester _downloader2;
|
||||
@@ -254,9 +237,15 @@ namespace YooAsset
|
||||
public PatchManifest Result { private set; get; }
|
||||
|
||||
/// <summary>
|
||||
/// 内置补丁清单版本号
|
||||
/// 内置补丁清单CRC
|
||||
/// </summary>
|
||||
public int StaticVersion { private set; get; }
|
||||
public string BuildinPackageCRC { private set; get; }
|
||||
|
||||
|
||||
public AppManifestLoader(string buildinPackageName)
|
||||
{
|
||||
_buildinPackageName = buildinPackageName;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否已经完成
|
||||
@@ -287,7 +276,8 @@ namespace YooAsset
|
||||
if (_steps == ESteps.LoadStaticVersion)
|
||||
{
|
||||
YooLogger.Log($"Load application static version.");
|
||||
string filePath = PathHelper.MakeStreamingLoadPath(YooAssetSettings.VersionFileName);
|
||||
string fileName = YooAssetSettingsData.GetStaticVersionFileName(_buildinPackageName);
|
||||
string filePath = PathHelper.MakeStreamingLoadPath(fileName);
|
||||
string url = PathHelper.ConvertToWWWPath(filePath);
|
||||
_downloader1 = new UnityWebDataRequester();
|
||||
_downloader1.SendRequest(url);
|
||||
@@ -306,7 +296,7 @@ namespace YooAsset
|
||||
}
|
||||
else
|
||||
{
|
||||
StaticVersion = int.Parse(_downloader1.GetText());
|
||||
BuildinPackageCRC = _downloader1.GetText();
|
||||
_steps = ESteps.LoadAppManifest;
|
||||
}
|
||||
_downloader1.Dispose();
|
||||
@@ -315,7 +305,8 @@ namespace YooAsset
|
||||
if (_steps == ESteps.LoadAppManifest)
|
||||
{
|
||||
YooLogger.Log($"Load application patch manifest.");
|
||||
string filePath = PathHelper.MakeStreamingLoadPath(YooAssetSettingsData.GetPatchManifestFileName(StaticVersion));
|
||||
string fileName = YooAssetSettingsData.GetPatchManifestFileName(_buildinPackageName, BuildinPackageCRC);
|
||||
string filePath = PathHelper.MakeStreamingLoadPath(fileName);
|
||||
string url = PathHelper.ConvertToWWWPath(filePath);
|
||||
_downloader2 = new UnityWebDataRequester();
|
||||
_downloader2.SendRequest(url);
|
||||
@@ -355,10 +346,10 @@ namespace YooAsset
|
||||
Done,
|
||||
}
|
||||
|
||||
private string _buildinPackageName;
|
||||
private string _buildinPackageCRC;
|
||||
private ESteps _steps = ESteps.CopyAppManifest;
|
||||
private UnityWebFileRequester _downloader1;
|
||||
private int _staticVersion;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 错误日志
|
||||
@@ -370,20 +361,11 @@ namespace YooAsset
|
||||
/// </summary>
|
||||
public bool Result { private set; get; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否已经完成
|
||||
/// </summary>
|
||||
public bool IsDone()
|
||||
{
|
||||
return _steps == ESteps.Done;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化流程
|
||||
/// </summary>
|
||||
public void Init(int staticVersion)
|
||||
public AppManifestCopyer(string buildinPackageName, string buildinPackageCRC)
|
||||
{
|
||||
_staticVersion = staticVersion;
|
||||
_buildinPackageName = buildinPackageName;
|
||||
_buildinPackageCRC = buildinPackageCRC;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -396,7 +378,8 @@ namespace YooAsset
|
||||
|
||||
if (_steps == ESteps.CopyAppManifest)
|
||||
{
|
||||
string destFilePath = PathHelper.MakePersistentLoadPath(YooAssetSettingsData.GetPatchManifestFileName(_staticVersion));
|
||||
string fileName = YooAssetSettingsData.GetPatchManifestFileName(_buildinPackageName, _buildinPackageCRC);
|
||||
string destFilePath = PathHelper.MakePersistentLoadPath(fileName);
|
||||
if (File.Exists(destFilePath))
|
||||
{
|
||||
Result = true;
|
||||
@@ -406,7 +389,7 @@ namespace YooAsset
|
||||
else
|
||||
{
|
||||
YooLogger.Log($"Copy application patch manifest.");
|
||||
string sourceFilePath = PathHelper.MakeStreamingLoadPath(YooAssetSettingsData.GetPatchManifestFileName(_staticVersion));
|
||||
string sourceFilePath = PathHelper.MakeStreamingLoadPath(fileName);
|
||||
string url = PathHelper.ConvertToWWWPath(sourceFilePath);
|
||||
_downloader1 = new UnityWebFileRequester();
|
||||
_downloader1.SendRequest(url, destFilePath);
|
||||
@@ -433,5 +416,13 @@ namespace YooAsset
|
||||
_downloader1.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否已经完成
|
||||
/// </summary>
|
||||
public bool IsDone()
|
||||
{
|
||||
return _steps == ESteps.Done;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -52,8 +52,7 @@ namespace YooAsset
|
||||
private enum ESteps
|
||||
{
|
||||
None,
|
||||
LoadWebManifestHash,
|
||||
CheckWebManifestHash,
|
||||
CheckManifestHash,
|
||||
LoadWebManifest,
|
||||
CheckWebManifest,
|
||||
InitVerifyingCache,
|
||||
@@ -63,18 +62,19 @@ namespace YooAsset
|
||||
|
||||
private static int RequestCount = 0;
|
||||
private readonly HostPlayModeImpl _impl;
|
||||
private readonly int _resourceVersion;
|
||||
private readonly string _packageName;
|
||||
private readonly string _packageCRC;
|
||||
private readonly int _timeout;
|
||||
private ESteps _steps = ESteps.None;
|
||||
private UnityWebDataRequester _downloader1;
|
||||
private UnityWebDataRequester _downloader2;
|
||||
private UnityWebDataRequester _downloader;
|
||||
private PatchCacheVerifier _patchCacheVerifier;
|
||||
private float _verifyTime;
|
||||
|
||||
internal HostPlayModeUpdateManifestOperation(HostPlayModeImpl impl, int resourceVersion, int timeout)
|
||||
internal HostPlayModeUpdateManifestOperation(HostPlayModeImpl impl, string packageName, string packageCRC, int timeout)
|
||||
{
|
||||
_impl = impl;
|
||||
_resourceVersion = resourceVersion;
|
||||
_packageName = packageName;
|
||||
_packageCRC = packageCRC;
|
||||
_timeout = timeout;
|
||||
|
||||
#if UNITY_WEBGL
|
||||
@@ -86,82 +86,59 @@ namespace YooAsset
|
||||
internal override void Start()
|
||||
{
|
||||
RequestCount++;
|
||||
_steps = ESteps.LoadWebManifestHash;
|
||||
_steps = ESteps.CheckManifestHash;
|
||||
}
|
||||
internal override void Update()
|
||||
{
|
||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
||||
return;
|
||||
|
||||
if (_steps == ESteps.LoadWebManifestHash)
|
||||
if (_steps == ESteps.CheckManifestHash)
|
||||
{
|
||||
string webURL = GetPatchManifestRequestURL(YooAssetSettingsData.GetPatchManifestHashFileName(_resourceVersion));
|
||||
YooLogger.Log($"Beginning to request patch manifest hash : {webURL}");
|
||||
_downloader1 = new UnityWebDataRequester();
|
||||
_downloader1.SendRequest(webURL, _timeout);
|
||||
_steps = ESteps.CheckWebManifestHash;
|
||||
}
|
||||
string cachedManifestCRC = GetSandboxPatchManifestFileHash(_packageName, _packageCRC);
|
||||
|
||||
if (_steps == ESteps.CheckWebManifestHash)
|
||||
{
|
||||
if (_downloader1.IsDone() == false)
|
||||
return;
|
||||
|
||||
// Check error
|
||||
if (_downloader1.HasError())
|
||||
// 如果补丁清单文件的哈希值相同
|
||||
if (cachedManifestCRC == _packageCRC)
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Failed;
|
||||
Error = _downloader1.GetError();
|
||||
YooLogger.Log($"Patch manifest file hash is not change : {_packageCRC}");
|
||||
LoadSandboxPatchManifest(_packageName, _packageCRC);
|
||||
FoundNewManifest = false;
|
||||
_steps = ESteps.InitVerifyingCache;
|
||||
}
|
||||
else
|
||||
{
|
||||
string webManifestHash = _downloader1.GetText();
|
||||
string cachedManifestHash = GetSandboxPatchManifestFileHash(_resourceVersion);
|
||||
|
||||
// 如果补丁清单文件的哈希值相同
|
||||
if (cachedManifestHash == webManifestHash)
|
||||
{
|
||||
YooLogger.Log($"Patch manifest file hash is not change : {webManifestHash}");
|
||||
LoadSandboxPatchManifest(_resourceVersion);
|
||||
FoundNewManifest = false;
|
||||
_steps = ESteps.InitVerifyingCache;
|
||||
}
|
||||
else
|
||||
{
|
||||
YooLogger.Log($"Patch manifest hash is change : {webManifestHash} -> {cachedManifestHash}");
|
||||
FoundNewManifest = true;
|
||||
_steps = ESteps.LoadWebManifest;
|
||||
}
|
||||
YooLogger.Log($"Patch manifest hash is change : {cachedManifestCRC} -> {_packageCRC}");
|
||||
FoundNewManifest = true;
|
||||
_steps = ESteps.LoadWebManifest;
|
||||
}
|
||||
_downloader1.Dispose();
|
||||
}
|
||||
|
||||
if (_steps == ESteps.LoadWebManifest)
|
||||
{
|
||||
string webURL = GetPatchManifestRequestURL(YooAssetSettingsData.GetPatchManifestFileName(_resourceVersion));
|
||||
string fileName = YooAssetSettingsData.GetPatchManifestFileName(_packageName, _packageCRC);
|
||||
string webURL = GetPatchManifestRequestURL(fileName);
|
||||
YooLogger.Log($"Beginning to request patch manifest : {webURL}");
|
||||
_downloader2 = new UnityWebDataRequester();
|
||||
_downloader2.SendRequest(webURL, _timeout);
|
||||
_downloader = new UnityWebDataRequester();
|
||||
_downloader.SendRequest(webURL, _timeout);
|
||||
_steps = ESteps.CheckWebManifest;
|
||||
}
|
||||
|
||||
if (_steps == ESteps.CheckWebManifest)
|
||||
{
|
||||
if (_downloader2.IsDone() == false)
|
||||
if (_downloader.IsDone() == false)
|
||||
return;
|
||||
|
||||
// Check error
|
||||
if (_downloader2.HasError())
|
||||
if (_downloader.HasError())
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Failed;
|
||||
Error = _downloader2.GetError();
|
||||
Error = _downloader.GetError();
|
||||
}
|
||||
else
|
||||
{
|
||||
// 解析补丁清单
|
||||
if (ParseAndSaveRemotePatchManifest(_resourceVersion, _downloader2.GetText()))
|
||||
if (ParseAndSaveRemotePatchManifest(_packageName, _packageCRC, _downloader.GetText()))
|
||||
{
|
||||
_steps = ESteps.InitVerifyingCache;
|
||||
}
|
||||
@@ -169,10 +146,10 @@ namespace YooAsset
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Failed;
|
||||
Error = $"URL : {_downloader2.URL} Error : remote patch manifest content is invalid";
|
||||
Error = $"URL : {_downloader.URL} Error : remote patch manifest content is invalid";
|
||||
}
|
||||
}
|
||||
_downloader2.Dispose();
|
||||
_downloader.Dispose();
|
||||
}
|
||||
|
||||
if (_steps == ESteps.InitVerifyingCache)
|
||||
@@ -210,7 +187,7 @@ namespace YooAsset
|
||||
/// <summary>
|
||||
/// 解析并保存远端请求的补丁清单
|
||||
/// </summary>
|
||||
private bool ParseAndSaveRemotePatchManifest(int updateResourceVersion, string content)
|
||||
private bool ParseAndSaveRemotePatchManifest(string packageName, string packageCRC, string content)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -218,7 +195,8 @@ namespace YooAsset
|
||||
_impl.SetLocalPatchManifest(remotePatchManifest);
|
||||
|
||||
YooLogger.Log("Save remote patch manifest file.");
|
||||
string savePath = PathHelper.MakePersistentLoadPath(YooAssetSettingsData.GetPatchManifestFileName(updateResourceVersion));
|
||||
string fileName = YooAssetSettingsData.GetPatchManifestFileName(packageName, packageCRC);
|
||||
string savePath = PathHelper.MakePersistentLoadPath(fileName);
|
||||
PatchManifest.Serialize(savePath, remotePatchManifest);
|
||||
return true;
|
||||
}
|
||||
@@ -233,10 +211,11 @@ namespace YooAsset
|
||||
/// 加载沙盒内的补丁清单
|
||||
/// 注意:在加载本地补丁清单之前,已经验证过文件的哈希值
|
||||
/// </summary>
|
||||
private void LoadSandboxPatchManifest(int updateResourceVersion)
|
||||
private void LoadSandboxPatchManifest(string packageName, string packageCRC)
|
||||
{
|
||||
YooLogger.Log("Load sandbox patch manifest file.");
|
||||
string filePath = PathHelper.MakePersistentLoadPath(YooAssetSettingsData.GetPatchManifestFileName(updateResourceVersion));
|
||||
string fileName = YooAssetSettingsData.GetPatchManifestFileName(packageName, packageCRC);
|
||||
string filePath = PathHelper.MakePersistentLoadPath(fileName);
|
||||
string jsonData = File.ReadAllText(filePath);
|
||||
var sandboxPatchManifest = PatchManifest.Deserialize(jsonData);
|
||||
_impl.SetLocalPatchManifest(sandboxPatchManifest);
|
||||
@@ -246,11 +225,12 @@ namespace YooAsset
|
||||
/// 获取沙盒内补丁清单文件的哈希值
|
||||
/// 注意:如果沙盒内补丁清单文件不存在,返回空字符串
|
||||
/// </summary>
|
||||
private string GetSandboxPatchManifestFileHash(int updateResourceVersion)
|
||||
private string GetSandboxPatchManifestFileHash(string packageName, string packageCRC)
|
||||
{
|
||||
string filePath = PathHelper.MakePersistentLoadPath(YooAssetSettingsData.GetPatchManifestFileName(updateResourceVersion));
|
||||
string fileName = YooAssetSettingsData.GetPatchManifestFileName(packageName, packageCRC);
|
||||
string filePath = PathHelper.MakePersistentLoadPath(fileName);
|
||||
if (File.Exists(filePath))
|
||||
return HashUtility.FileMD5(filePath);
|
||||
return HashUtility.FileCRC32(filePath);
|
||||
else
|
||||
return string.Empty;
|
||||
}
|
||||
@@ -271,15 +251,17 @@ namespace YooAsset
|
||||
}
|
||||
|
||||
private readonly HostPlayModeImpl _impl;
|
||||
private readonly int _resourceVersion;
|
||||
private readonly string _packageName;
|
||||
private readonly string _packageCRC;
|
||||
private ESteps _steps = ESteps.None;
|
||||
private PatchCacheVerifier _patchCacheVerifier;
|
||||
private float _verifyTime;
|
||||
|
||||
internal HostPlayModeWeaklyUpdateManifestOperation(HostPlayModeImpl impl, int resourceVersion)
|
||||
internal HostPlayModeWeaklyUpdateManifestOperation(HostPlayModeImpl impl, string packageName, string packageCRC)
|
||||
{
|
||||
_impl = impl;
|
||||
_resourceVersion = resourceVersion;
|
||||
_packageName = packageName;
|
||||
_packageCRC = packageCRC;
|
||||
|
||||
#if UNITY_WEBGL
|
||||
_patchCacheVerifier = new PatchCacheVerifierWithoutThread();
|
||||
@@ -298,7 +280,7 @@ namespace YooAsset
|
||||
|
||||
if (_steps == ESteps.LoadSandboxManifestHash)
|
||||
{
|
||||
LoadSandboxPatchManifest(_resourceVersion);
|
||||
LoadSandboxPatchManifest(_packageName, _packageCRC);
|
||||
_steps = ESteps.InitVerifyingCache;
|
||||
}
|
||||
|
||||
@@ -313,7 +295,7 @@ namespace YooAsset
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Failed;
|
||||
Error = $"The resource version {_resourceVersion} content is not complete !";
|
||||
Error = $"The package resource {_packageName}_{_packageCRC} content is not complete !";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -328,7 +310,7 @@ namespace YooAsset
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Failed;
|
||||
Error = $"The resource version {_resourceVersion} content has verify failed file !";
|
||||
Error = $"The package resource {_packageName}_{_packageCRC} content has verify failed file !";
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -343,9 +325,10 @@ namespace YooAsset
|
||||
/// 加载沙盒内的补丁清单
|
||||
/// 注意:在加载本地补丁清单之前,未验证过文件的哈希值
|
||||
/// </summary>
|
||||
private void LoadSandboxPatchManifest(int updateResourceVersion)
|
||||
private void LoadSandboxPatchManifest(string packageName, string packageCRC)
|
||||
{
|
||||
string filePath = PathHelper.MakePersistentLoadPath(YooAssetSettingsData.GetPatchManifestFileName(updateResourceVersion));
|
||||
string fileName = YooAssetSettingsData.GetPatchManifestFileName(packageName, packageCRC);
|
||||
string filePath = PathHelper.MakePersistentLoadPath(fileName);
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
YooLogger.Log("Load sandbox patch manifest file.");
|
||||
|
||||
@@ -78,21 +78,23 @@ namespace YooAsset
|
||||
|
||||
private static int RequestCount = 0;
|
||||
private readonly HostPlayModeImpl _impl;
|
||||
private readonly int _resourceVersion;
|
||||
private readonly string _packageName;
|
||||
private readonly string _packageCRC;
|
||||
private readonly int _timeout;
|
||||
private ESteps _steps = ESteps.None;
|
||||
private UnityWebDataRequester _downloader;
|
||||
private PatchManifest _remotePatchManifest;
|
||||
|
||||
internal HostPlayModeUpdatePackageOperation(HostPlayModeImpl impl, int resourceVersion, int timeout)
|
||||
internal HostPlayModeUpdatePackageOperation(HostPlayModeImpl impl, string packageName, string packageCRC, int timeout)
|
||||
{
|
||||
_impl = impl;
|
||||
_resourceVersion = resourceVersion;
|
||||
_packageName = packageName;
|
||||
_packageCRC = packageCRC;
|
||||
_timeout = timeout;
|
||||
}
|
||||
internal override void Start()
|
||||
{
|
||||
RequestCount++;
|
||||
RequestCount++;
|
||||
_steps = ESteps.LoadWebManifest;
|
||||
}
|
||||
internal override void Update()
|
||||
@@ -102,7 +104,8 @@ namespace YooAsset
|
||||
|
||||
if (_steps == ESteps.LoadWebManifest)
|
||||
{
|
||||
string webURL = GetPatchManifestRequestURL(YooAssetSettingsData.GetPatchManifestFileName(_resourceVersion));
|
||||
string fileName = YooAssetSettingsData.GetPatchManifestFileName(_packageName, _packageCRC);
|
||||
string webURL = GetPatchManifestRequestURL(fileName);
|
||||
YooLogger.Log($"Beginning to request patch manifest : {webURL}");
|
||||
_downloader = new UnityWebDataRequester();
|
||||
_downloader.SendRequest(webURL, _timeout);
|
||||
|
||||
@@ -9,9 +9,9 @@ namespace YooAsset
|
||||
public abstract class UpdateStaticVersionOperation : AsyncOperationBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 资源版本号
|
||||
/// 包裹文件的哈希值
|
||||
/// </summary>
|
||||
public int ResourceVersion { protected set; get; } = 0;
|
||||
public string PackageCRC { protected set; get; } = string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -57,13 +57,15 @@ namespace YooAsset
|
||||
|
||||
private static int RequestCount = 0;
|
||||
private readonly HostPlayModeImpl _impl;
|
||||
private readonly string _packageName;
|
||||
private readonly int _timeout;
|
||||
private ESteps _steps = ESteps.None;
|
||||
private UnityWebDataRequester _downloader;
|
||||
|
||||
internal HostPlayModeUpdateStaticVersionOperation(HostPlayModeImpl impl, int timeout)
|
||||
internal HostPlayModeUpdateStaticVersionOperation(HostPlayModeImpl impl, string packageName, int timeout)
|
||||
{
|
||||
_impl = impl;
|
||||
_packageName = packageName;
|
||||
_timeout = timeout;
|
||||
}
|
||||
internal override void Start()
|
||||
@@ -78,7 +80,8 @@ namespace YooAsset
|
||||
|
||||
if (_steps == ESteps.LoadStaticVersion)
|
||||
{
|
||||
string webURL = GetStaticVersionRequestURL(YooAssetSettings.VersionFileName);
|
||||
string versionFileName = YooAssetSettingsData.GetStaticVersionFileName(_packageName);
|
||||
string webURL = GetStaticVersionRequestURL(versionFileName);
|
||||
YooLogger.Log($"Beginning to request static version : {webURL}");
|
||||
_downloader = new UnityWebDataRequester();
|
||||
_downloader.SendRequest(webURL, _timeout);
|
||||
@@ -99,17 +102,18 @@ namespace YooAsset
|
||||
}
|
||||
else
|
||||
{
|
||||
if (int.TryParse(_downloader.GetText(), out int value))
|
||||
{
|
||||
ResourceVersion = value;
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Succeed;
|
||||
}
|
||||
else
|
||||
string packageCRC = _downloader.GetText();
|
||||
if(string.IsNullOrEmpty(packageCRC))
|
||||
{
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Failed;
|
||||
Error = $"URL : {_downloader.URL} Error : static version content is invalid.";
|
||||
Error = $"URL : {_downloader.URL} Error : static version content is empty.";
|
||||
}
|
||||
else
|
||||
{
|
||||
PackageCRC = packageCRC;
|
||||
_steps = ESteps.Done;
|
||||
Status = EOperationStatus.Succeed;
|
||||
}
|
||||
}
|
||||
_downloader.Dispose();
|
||||
|
||||
Reference in New Issue
Block a user