mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-07 16:45:10 +00:00
更新Procedure流程
更新Procedure流程
This commit is contained in:
@@ -67,14 +67,13 @@ namespace GameMain
|
|||||||
if (playMode == EPlayMode.EditorSimulateMode)
|
if (playMode == EPlayMode.EditorSimulateMode)
|
||||||
{
|
{
|
||||||
Log.Info("Editor resource mode detected.");
|
Log.Info("Editor resource mode detected.");
|
||||||
ChangeState<ProcedurePreload>(procedureOwner);
|
ChangeState<ProcedureInitResources>(procedureOwner);
|
||||||
}
|
}
|
||||||
// 单机模式。
|
// 单机模式。
|
||||||
else if (playMode == EPlayMode.OfflinePlayMode)
|
else if (playMode == EPlayMode.OfflinePlayMode)
|
||||||
{
|
{
|
||||||
Log.Info("Package resource mode detected.");
|
Log.Info("Package resource mode detected.");
|
||||||
// ChangeState<ProcedureInitResources>(procedureOwner);
|
ChangeState<ProcedureInitResources>(procedureOwner);
|
||||||
ChangeState<ProcedureUpdateVersion>(procedureOwner);
|
|
||||||
}
|
}
|
||||||
// 可更新模式。
|
// 可更新模式。
|
||||||
else if (playMode == EPlayMode.HostPlayMode ||
|
else if (playMode == EPlayMode.HostPlayMode ||
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections;
|
||||||
using Cysharp.Threading.Tasks;
|
using Cysharp.Threading.Tasks;
|
||||||
using TEngine;
|
using TEngine;
|
||||||
|
using YooAsset;
|
||||||
using ProcedureOwner = TEngine.IFsm<TEngine.IProcedureManager>;
|
using ProcedureOwner = TEngine.IFsm<TEngine.IProcedureManager>;
|
||||||
|
|
||||||
namespace GameMain
|
namespace GameMain
|
||||||
@@ -20,7 +22,7 @@ namespace GameMain
|
|||||||
UILoadMgr.Show(UIDefine.UILoadUpdate,"初始化资源中...");
|
UILoadMgr.Show(UIDefine.UILoadUpdate,"初始化资源中...");
|
||||||
|
|
||||||
// 注意:使用单机模式并初始化资源前,需要先构建 AssetBundle 并复制到 StreamingAssets 中,否则会产生 HTTP 404 错误
|
// 注意:使用单机模式并初始化资源前,需要先构建 AssetBundle 并复制到 StreamingAssets 中,否则会产生 HTTP 404 错误
|
||||||
OnInitResourcesComplete().Forget();
|
Utility.Unity.StartCoroutine(InitResources(procedureOwner));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
|
protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
|
||||||
@@ -36,11 +38,41 @@ namespace GameMain
|
|||||||
ChangeState<ProcedurePreload>(procedureOwner);
|
ChangeState<ProcedurePreload>(procedureOwner);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async UniTaskVoid OnInitResourcesComplete()
|
/// <summary>
|
||||||
|
/// 编辑器与单机保持相同流程。
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
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;
|
m_InitResourcesComplete = true;
|
||||||
Log.Info("Init resources complete.");
|
}
|
||||||
|
|
||||||
|
private void OnInitResourcesError(ProcedureOwner procedureOwner)
|
||||||
|
{
|
||||||
|
UILoadTip.ShowMessageBox($"初始化资源失败!点击确认重试</color>", MessageShowType.TwoButton,
|
||||||
|
LoadStyle.StyleEnum.Style_Retry
|
||||||
|
, () =>
|
||||||
|
{
|
||||||
|
Utility.Unity.StartCoroutine(InitResources(procedureOwner));
|
||||||
|
}, UnityEngine.Application.Quit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user