diff --git a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs index 1c494233..dce341a8 100644 --- a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs +++ b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs @@ -67,14 +67,13 @@ namespace GameMain if (playMode == EPlayMode.EditorSimulateMode) { Log.Info("Editor resource mode detected."); - ChangeState(procedureOwner); + ChangeState(procedureOwner); } // 单机模式。 else if (playMode == EPlayMode.OfflinePlayMode) { Log.Info("Package resource mode detected."); - // ChangeState(procedureOwner); - ChangeState(procedureOwner); + ChangeState(procedureOwner); } // 可更新模式。 else if (playMode == EPlayMode.HostPlayMode || diff --git a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitResources.cs b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitResources.cs index 7dc229a9..7e89411a 100644 --- a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitResources.cs +++ b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitResources.cs @@ -1,6 +1,8 @@ using System; +using System.Collections; using Cysharp.Threading.Tasks; using TEngine; +using YooAsset; using ProcedureOwner = TEngine.IFsm; namespace GameMain @@ -20,7 +22,7 @@ namespace GameMain UILoadMgr.Show(UIDefine.UILoadUpdate,"初始化资源中..."); // 注意:使用单机模式并初始化资源前,需要先构建 AssetBundle 并复制到 StreamingAssets 中,否则会产生 HTTP 404 错误 - OnInitResourcesComplete().Forget(); + Utility.Unity.StartCoroutine(InitResources(procedureOwner)); } protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds) @@ -36,11 +38,41 @@ namespace GameMain ChangeState(procedureOwner); } - private async UniTaskVoid OnInitResourcesComplete() + /// + /// 编辑器与单机保持相同流程。 + /// + /// + private IEnumerator InitResources(ProcedureOwner procedureOwner) { - await UniTask.Delay(TimeSpan.FromSeconds(1f)); + // 2. 获取资源清单的版本信息 + var operation1 = GameModule.Resource.UpdatePackageVersionAsync(); + yield return operation1; + if (operation1.Status != EOperationStatus.Succeed) + { + OnInitResourcesError(procedureOwner); + yield break; + } + + // 3. 传入的版本信息更新资源清单 + var operation = GameModule.Resource.UpdatePackageManifestAsync(operation1.PackageVersion); + yield return operation; + if (operation.Status != EOperationStatus.Succeed) + { + OnInitResourcesError(procedureOwner); + yield break; + } + m_InitResourcesComplete = true; - Log.Info("Init resources complete."); + } + + private void OnInitResourcesError(ProcedureOwner procedureOwner) + { + UILoadTip.ShowMessageBox($"初始化资源失败!点击确认重试", MessageShowType.TwoButton, + LoadStyle.StyleEnum.Style_Retry + , () => + { + Utility.Unity.StartCoroutine(InitResources(procedureOwner)); + }, UnityEngine.Application.Quit); } } } \ No newline at end of file