This commit is contained in:
2025-11-14 18:44:06 +08:00
parent 10156da245
commit 22e867d077
7013 changed files with 2572882 additions and 1804 deletions

View File

@@ -59,13 +59,20 @@ namespace Tuan.GameFramework
default:
break;
}
await initializationOperation.ToUniTask();
await initializationOperation;
if (initializationOperation.Status != EOperationStatus.Succeed)
{
MessageBox.Show()
.SetTitle($"{data.packageName}初始化")
.SetContent($"{initializationOperation.Error}")
.AddButton("退出", (box) => { Application.Quit(); });
.AddButton("退出", (box) =>
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
});
}
else
{
@@ -178,7 +185,7 @@ namespace Tuan.GameFramework
public async UniTask<bool> RequestPackageVersion(bool showBox = true)
{
var operation = package.RequestPackageVersionAsync(true, 5);
await operation.ToUniTask();
await operation;
if (operation.Status != EOperationStatus.Succeed)
{
if (showBox)
@@ -189,6 +196,8 @@ namespace Tuan.GameFramework
if (!string.IsNullOrEmpty(cachedVersion))
{
packageVersion = cachedVersion;
PatchEvent.UpdateStatus($"获取缓存版本成功{data.packageName}");
Debug.Log($"获取缓存版本成功{data.packageName}{packageVersion}");
return true;
}
}
@@ -197,8 +206,8 @@ namespace Tuan.GameFramework
else
{
packageVersion = operation.PackageVersion;
PatchEvent.UpdateStatus($"获取版本成功{data.packageName}");
Debug.Log($"获取版本成功{data.packageName}{packageVersion}");
PatchEvent.UpdateStatus($"获取远端版本成功{data.packageName}");
Debug.Log($"获取远端版本成功{data.packageName}{packageVersion}");
}
return operation.Status == EOperationStatus.Succeed;
}
@@ -215,7 +224,11 @@ namespace Tuan.GameFramework
.AddButton("退出", (box) =>
{
completionSource.TrySetResult(false);
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
});
bool shouldContinue = await completionSource.Task;
return shouldContinue;
@@ -254,7 +267,7 @@ namespace Tuan.GameFramework
public async UniTask<bool> UpdatePackageManifest(bool showBox = true)
{
var operation = package.UpdatePackageManifestAsync(packageVersion, 10);
await operation.ToUniTask();
await operation;
if (operation.Status != EOperationStatus.Succeed)
{
if (showBox)
@@ -262,7 +275,14 @@ namespace Tuan.GameFramework
MessageBox.Show()
.SetTitle($"{data.packageName}更新清单")
.SetContent($"{operation.Error}")
.AddButton("退出", (box) => { Application.Quit(); });
.AddButton("退出", (box) =>
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
});
}
}
else
@@ -308,7 +328,7 @@ namespace Tuan.GameFramework
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
Application.Quit();
#endif
});
bool shouldContinue = await completionSource.Task;
@@ -320,7 +340,7 @@ namespace Tuan.GameFramework
return true;
Debug.Log($"{data.packageName} DownloadPackageFiles {downloader.TotalDownloadCount}");
downloader.BeginDownload();
await downloader.ToUniTask();
await downloader;
if (downloader.Status != EOperationStatus.Succeed)
{
if (showBox)
@@ -328,7 +348,14 @@ namespace Tuan.GameFramework
MessageBox.Show()
.SetTitle($"{data.packageName}下载文件")
.SetContent($"{downloader.Error}")
.AddButton("退出", (box) => { Application.Quit(); });
.AddButton("退出", (box) =>
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
});
}
return false;
}
@@ -337,7 +364,7 @@ namespace Tuan.GameFramework
public async UniTask<bool> ClearCacheBundle(bool showBox = true)
{
var operation = package.ClearCacheFilesAsync(EFileClearMode.ClearUnusedBundleFiles);
await operation.ToUniTask();
await operation;
if (operation.Status != EOperationStatus.Succeed)
{
if (showBox)
@@ -345,7 +372,14 @@ namespace Tuan.GameFramework
MessageBox.Show()
.SetTitle($"{data.packageName}清除缓存")
.SetContent($"{operation.Error}")
.AddButton("退出", (box) => { Application.Quit(); });
.AddButton("退出", (box) =>
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
});
}
}
return operation.Status == EOperationStatus.Succeed;

View File

@@ -22,52 +22,33 @@ namespace Tuan.GameFramework
}
public async UniTask Execute()
{
#if !UNITY_EDITOR
CheckIsOffline();
#endif
if (!await operation.InitializePackage()) return;
var version = await GetBestPackageVersion();
#if UNITY_EDITOR
if (!await operation.RequestPackageVersion()) return;
version = operation.packageVersion;
#endif
if (!await operation.RequestPackageVersion())
{
operation.packageVersion = await operation.GetBuildinPackageVersion();
}
//获取版本失败
if (version == null)
if (operation.packageVersion == null)
{
MessageBox.Show()
.SetTitle($"{operation.data.packageName}获取版本")
.SetContent("获取版本失败")
.AddButton("退出", (box) => { Application.Quit(); });
.AddButton("退出", (box) =>
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
});
return;
}
operation.packageVersion = version;
if (!await operation.UpdatePackageManifest()) return;
await HotDllLoader.Inst.LoadDll(YooAssets.GetPackage("Preload"), "GameScripts.Preload");
await LoadAndShowPatchWindow();
MainUICanvas.Inst.InitBg.SetActive(false);
_ = UpdatePreloadPackage();
}
void CheckIsOffline()
{
if (string.IsNullOrEmpty(operation.GetCachedPackageVersion()))
{
operation.data.playMode = EPlayMode.OfflinePlayMode;
}
}
async Task<string> GetBestPackageVersion()
{
string cachedVersion = operation.GetCachedPackageVersion();
if (!string.IsNullOrEmpty(cachedVersion))
{
return cachedVersion;
}
string buildinVersion = await operation.GetBuildinPackageVersion();
if (!string.IsNullOrEmpty(buildinVersion))
{
return buildinVersion;
}
return null;
}
private async UniTask LoadAndShowPatchWindow()
{
var assetHandle = operation.package.LoadAssetAsync<GameObject>("PatchWindow");
@@ -82,9 +63,9 @@ namespace Tuan.GameFramework
if (!await operation.UpdatePackageManifest(false)) return;
if (operation.CreateDownloader())
{
if (!await operation.DownloadPackageFiles()) return;
if (!await operation.DownloadPackageFiles(false)) return;
}
if (!await operation.ClearCacheBundle()) return;
if (!await operation.ClearCacheBundle(false)) return;
operation.SaveVersionToCache();
}
}