From 73d3c4e30da7c84edae07db96cfe35c4b7f8a1f5 Mon Sep 17 00:00:00 2001 From: Blank Date: Mon, 19 Aug 2024 18:37:21 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]1.=20=E4=BF=AE=E5=A4=8DOffl?= =?UTF-8?q?ine=20=E6=A8=A1=E5=BC=8F=E7=9A=84=E6=97=B6=E5=80=99=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Procedure/PatchUpdater/ProcedurePatchInit.cs | 4 ++-- .../PatchUpdater/ProcedureUpdateManifest.cs | 15 +++++++++++++-- .../PatchUpdater/ProcedureUpdateStaticVersion.cs | 8 ++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedurePatchInit.cs b/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedurePatchInit.cs index d115f4b..d7b68dc 100644 --- a/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedurePatchInit.cs +++ b/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedurePatchInit.cs @@ -21,9 +21,9 @@ protected override async void OnEnter(IFsm procedureOwner) if (GameApp.Asset.GamePlayMode == EPlayMode.OfflinePlayMode) { - Log.Info("当前为离线模式,直接启动 ProcedureGameLauncherState"); + Log.Info("当前为离线模式,直接启动 ProcedureUpdateStaticVersion"); await GameApp.Asset.InitPackageAsync(AssetComponent.BuildInPackageName, string.Empty, string.Empty, true); - ChangeState(procedureOwner); + ChangeState(procedureOwner); return; } diff --git a/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedureUpdateManifest.cs b/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedureUpdateManifest.cs index 2d6d3a3..a73059b 100644 --- a/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedureUpdateManifest.cs +++ b/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedureUpdateManifest.cs @@ -1,4 +1,5 @@ using System.Collections; +using System.Threading.Tasks; using Cysharp.Threading.Tasks; using GameFrameX.Asset.Runtime; using GameFrameX.Fsm.Runtime; @@ -11,10 +12,20 @@ namespace GameFrameX.Procedure { internal sealed class ProcedureUpdateManifest : ProcedureBase { - protected override void OnEnter(IFsm procedureOwner) + protected override async void OnEnter(IFsm procedureOwner) { base.OnEnter(procedureOwner); + if (GameApp.Asset.GamePlayMode == EPlayMode.OfflinePlayMode) + { + var varStringVersion = procedureOwner.GetData(AssetComponent.BuildInPackageName + "Version"); + var buildInResourcePackage = GameApp.Asset.GetAssetsPackage(AssetComponent.BuildInPackageName); + var buildInOperation = buildInResourcePackage.UpdatePackageManifestAsync(varStringVersion.Value); + await buildInOperation.ToUniTask(); + ChangeState(procedureOwner); + return; + } + GameApp.Event.Fire(this, AssetPatchStatesChangeEventArgs.Create(AssetComponent.BuildInPackageName, EPatchStates.UpdateManifest)); UpdateManifest(procedureOwner).ToUniTask(); } @@ -24,7 +35,7 @@ private IEnumerator UpdateManifest(IFsm procedureOwner) { yield return new WaitForSecondsRealtime(0.1f); - var buildInResourcePackage = YooAssets.GetPackage(AssetComponent.BuildInPackageName); + var buildInResourcePackage = YooAssets.GetPackage(AssetComponent.BuildInPackageName); UpdatePackageManifestOperation buildInOperation; if (GameApp.Asset.GamePlayMode == EPlayMode.EditorSimulateMode) { diff --git a/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedureUpdateStaticVersion.cs b/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedureUpdateStaticVersion.cs index 56221a3..2980661 100644 --- a/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedureUpdateStaticVersion.cs +++ b/Assets/Scripts/Framework/Procedure/PatchUpdater/ProcedureUpdateStaticVersion.cs @@ -3,6 +3,7 @@ using GameFrameX.Asset.Runtime; using GameFrameX.Fsm.Runtime; using GameFrameX.Procedure.Runtime; +using GameFrameX.Runtime; using UnityEngine; using YooAsset; @@ -30,6 +31,13 @@ private IEnumerator GetStaticVersion(IFsm procedureOwner) { //更新成功 string packageVersion = buildInOperation.PackageVersion; + if (GameApp.Asset.GamePlayMode == EPlayMode.OfflinePlayMode) + { + var varStringVersion = ReferencePool.Acquire(); + varStringVersion.SetValue(packageVersion); + procedureOwner.SetData(AssetComponent.BuildInPackageName + "Version", varStringVersion); + } + Debug.Log($"Updated package Version : {packageVersion}"); ChangeState(procedureOwner); }