继续重构调整(UI)

- 引入 UniTask 和异步版本的 UIModule
- 调整 Runtime/UIBase 和 Presentation 下的脚本命名空间到 SepCore.UI
- 将原来的 5 层 UI 迁移到异步实现
- 规范各层的 UI 脚本命名
This commit is contained in:
SepComet
2026-06-03 09:58:37 +08:00
parent 6b8a6a8789
commit 7bba8bbb80
552 changed files with 83648 additions and 2726 deletions
@@ -90,7 +90,7 @@ namespace Procedure
switch (sceneId)
{
case SceneId.Menu:
ChangeState<ProcedureStartMenu>(procedureOwner);
ChangeState<ProcedureMenu>(procedureOwner);
break;
case SceneId.StressTest:
ChangeState<ProcedureStressTest>(procedureOwner);
@@ -1,8 +1,9 @@
using SepCore.Definition;
using Cysharp.Threading.Tasks;
using SepCore.Definition;
using GameFramework;
using GameFramework.Event;
using GameFramework.Resource;
using UI;
using SepCore.UI;
using UnityEngine;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
@@ -104,7 +105,7 @@ namespace Procedure
if (m_VersionInfo.ForceUpdateGame)
{
// 需要强制更新游戏应用
GameEntry.UIRouter.OpenUI(UIFormType.DialogForm, new DialogFormRawData
GameEntry.UIRouter.OpenUIAsync(UIFormType.DialogForm, new DialogRawData
{
Mode = 2,
Title = GameEntry.Localization.GetString("ForceUpdate.Title"),
@@ -113,7 +114,7 @@ namespace Procedure
OnClickConfirm = GotoUpdateApp,
CancelText = GameEntry.Localization.GetString("ForceUpdate.QuitButton"),
OnClickCancel = delegate (object userData) { UnityGameFramework.Runtime.GameEntry.Shutdown(ShutdownType.Quit); },
});
}).Forget();
return;
}
@@ -6,7 +6,7 @@ using SepCore.DataTable;
using SepCore.Definition;
using CustomUtility;
using TMPro;
using UI;
using SepCore.UI;
using UnityEngine;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
@@ -1,8 +1,9 @@
using GameFramework;
using GameFramework.Event;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using SepCore.Definition;
using UI;
using SepCore.UI;
using UnityEngine;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
@@ -40,7 +41,7 @@ namespace Procedure
if (Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork)
{
GameEntry.UIRouter.OpenUI(UIFormType.DialogForm, new DialogFormRawData
GameEntry.UIRouter.OpenUIAsync(UIFormType.DialogForm, new DialogRawData
{
Mode = 2,
Title = GameEntry.Localization.GetString("UpdateResourceViaCarrierDataNetwork.Title"),
@@ -52,7 +53,7 @@ namespace Procedure
{
UnityGameFramework.Runtime.GameEntry.Shutdown(ShutdownType.Quit);
},
});
}).Forget();
return;
}
@@ -1,7 +1,8 @@
using Cysharp.Threading.Tasks;
using SepCore.Definition;
using GameFramework.Fsm;
using GameFramework.Procedure;
using UI;
using SepCore.UI;
using UnityGameFramework.Runtime;
namespace Procedure
@@ -22,7 +23,7 @@ namespace Procedure
_procedureGame = master;
var useCase = new LevelUpFormUseCase(_procedureGame.Player, () => IsCompleted = true);
var useCase = new LevelUpUseCase(_procedureGame.Player, () => IsCompleted = true);
GameEntry.UIRouter.BindUIUseCase(UIFormType.LevelUpForm, useCase);
}
@@ -32,7 +33,7 @@ namespace Procedure
IsCompleted = false;
GameEntry.UIRouter.OpenUI(UIFormType.LevelUpForm);
GameEntry.UIRouter.OpenUIAsync(UIFormType.LevelUpForm).Forget();
}
public override void OnUpdate(IFsm<IProcedureManager> procedureOwner, float elapseSeconds,
@@ -48,7 +49,7 @@ namespace Procedure
{
Log.Debug("GameStateLevelUp::OnLeave");
GameEntry.UIRouter.CloseUI(UIFormType.LevelUpForm);
GameEntry.UIRouter.CloseUIAsync(UIFormType.LevelUpForm).Forget();
}
public override void OnDestroy(IFsm<IProcedureManager> procedureOwner)
@@ -1,7 +1,8 @@
using Cysharp.Threading.Tasks;
using SepCore.Definition;
using GameFramework.Fsm;
using GameFramework.Procedure;
using UI;
using SepCore.UI;
using UnityGameFramework.Runtime;
namespace Procedure
@@ -21,7 +22,7 @@ namespace Procedure
Log.Debug("GameStateShop::OnInit");
_procedureGame = master;
var shopFormUseCase = new ShopFormUseCase(_procedureGame.Player, _procedureGame.CurrentLevel, () => ShopFinish = true);
var shopFormUseCase = new ShopUseCase(_procedureGame.Player, _procedureGame.CurrentLevel, () => ShopFinish = true);
GameEntry.UIRouter.BindUIUseCase(UIFormType.ShopForm, shopFormUseCase);
}
@@ -31,7 +32,7 @@ namespace Procedure
ShopFinish = false;
GameEntry.UIRouter.OpenUI(UIFormType.ShopForm);
GameEntry.UIRouter.OpenUIAsync(UIFormType.ShopForm).Forget();
}
public override void OnUpdate(IFsm<IProcedureManager> procedureOwner, float elapseSeconds,
@@ -47,7 +48,7 @@ namespace Procedure
{
Log.Debug("GameStateShop::OnLeave");
GameEntry.UIRouter.CloseUI(UIFormType.ShopForm);
GameEntry.UIRouter.CloseUIAsync(UIFormType.ShopForm).Forget();
}
public override void OnDestroy(IFsm<IProcedureManager> procedureOwner)
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using SepCore.DataTable;
using SepCore.Definition;
using Entity;
@@ -7,7 +8,7 @@ using GameFramework.Event;
using GameFramework.Fsm;
using GameFramework.Procedure;
using UnityGameFramework.Runtime;
using UI;
using SepCore.UI;
namespace Procedure
{
@@ -97,7 +98,7 @@ namespace Procedure
_currentPlayerData = new PlayerData(-1, 1001);
GameEntry.Entity.ShowPlayer(_currentPlayerData);
GameEntry.UIRouter.OpenUI(UIFormType.HudForm);
GameEntry.UIRouter.OpenUIAsync(UIFormType.HudForm).Forget();
}
protected override void OnUpdate(IFsm<IProcedureManager> procedureOwner, float elapseSeconds,
@@ -129,7 +130,7 @@ namespace Procedure
_gameStates.Clear();
GameEntry.UIRouter.CloseUI(UIFormType.HudForm);
GameEntry.UIRouter.CloseUIAsync(UIFormType.HudForm).Forget();
_hudForm = null;
@@ -1,12 +1,13 @@
using Cysharp.Threading.Tasks;
using SepCore.Definition;
using UI;
using SepCore.UI;
using UnityEngine;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
namespace Procedure
{
public class ProcedureStartMenu : ProcedureBase
public class ProcedureMenu : ProcedureBase
{
public override bool UseNativeDialog => false;
@@ -22,15 +23,15 @@ namespace Procedure
#region FSM
protected override void OnEnter(ProcedureOwner procedureOwner)
protected override async void OnEnter(ProcedureOwner procedureOwner)
{
base.OnEnter(procedureOwner);
GameEntry.UIRouter.OpenUI(UIFormType.StartMenuForm);
var useCase2 = new SelectRoleFormUseCase(roleId => StartGame(roleId));
GameEntry.UIRouter.BindUIUseCase(UIFormType.SelectRoleForm, useCase2);
await GameEntry.UIRouter.OpenUIAsync(UIFormType.MenuForm);
var useCase = new SelectRoleUseCase(StartGame);
GameEntry.UIRouter.BindUIUseCase(UIFormType.SelectRoleForm, useCase);
QualitySettings.vSyncCount = 0;
Application.targetFrameRate = 120;
}
@@ -38,8 +39,8 @@ namespace Procedure
protected override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown)
{
base.OnLeave(procedureOwner, isShutdown);
GameEntry.UIRouter.CloseUI(UIFormType.StartMenuForm);
GameEntry.UIRouter.CloseUI(UIFormType.SelectRoleForm);
GameEntry.UIRouter.CloseUIAsync(UIFormType.MenuForm).Forget();
GameEntry.UIRouter.CloseUIAsync(UIFormType.SelectRoleForm).Forget();
}
protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
@@ -5,7 +5,8 @@
"GUID:363c5eb08ff8e6a439b85e37b8c20d96",
"GUID:47a82ffa13c291447ab895cd0bc251cd",
"GUID:0e1d182005e0ae647ab3fa40f5492dbb",
"GUID:6055be8ebefd69e48b49212b09b47b2f"
"GUID:6055be8ebefd69e48b49212b09b47b2f",
"GUID:f51ebe6a0ceec4240a699833d6309b23"
],
"includePlatforms": [],
"excludePlatforms": [],