From d2ce741a370f975f5f1a211dea8cf2b082af1689 Mon Sep 17 00:00:00 2001
From: SepComet <202308010230@stu.csust.edu.cn>
Date: Sun, 14 Jun 2026 13:19:12 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8C=89=20UI=20=E4=BA=94=E5=B1=82=E8=A7=84?=
=?UTF-8?q?=E8=8C=83=E9=87=8D=E6=9E=84=20SelectRoleForm=20=E5=B9=B6?=
=?UTF-8?q?=E6=95=B4=E7=90=86=E4=BA=8B=E4=BB=B6=E7=9B=AE=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- SelectRoleForm 五层归位:UseCase 改为构造注入 IProcedureMenu(新增 Runtime/ProcedureInterface),RawData 暴露原始 StatModifier[] 而非展示串,Controller 复用 ItemDescUtility 拼装属性文本,并修复 OpenUIAsync(object) 合法 RawData 分支缺少 return 的误报路径
- StatModifier 去展示职责:删除 _statTypeNames / ToString,富文本格式化下沉到 Presentation 层的 ItemDescUtility.Describe(StatModifier),CreatePropDescription 改用统一入口
- 事件目录按 UIForm 归档:Base/Event/UI/Menu/* 拆解到 SelectRoleForm/ MenuForm/ DialogForm/ DisplayItemInfoForm/ Combat/ 等各自子目录,MenuSelectRoleReturnEventArgs 改名 SelectRoleReturnEventArgs,语义归属本 UI 模块
- IUIFormController → IUIController 改名,联动 UIControllerBase / UIRouterComponent / Editor
- 同步更新 docs/UI-5层架构设计规范.md 中相关示例与 MenuForm.prefab、ProcedureMenu 引用
---
.../Definition/DataStruct/StatModifier.cs | 51 -------------------
.../{ => Combat}/LevelProcessEventArgs.cs | 0
.../LevelProcessEventArgs.cs.meta | 0
.../Base/Event/{UI => }/DialogForm.meta | 0
.../{UI => }/DialogForm/DialogEventArgs.cs | 0
.../DialogForm/DialogEventArgs.cs.meta | 0
.../Base/Event/DisplayItemInfoForm.meta | 3 ++
.../DisplayItemInfoHideEventArgs.cs | 0
.../DisplayItemInfoHideEventArgs.cs.meta | 0
.../DisplayItemInfoLockEventArgs.cs | 0
.../DisplayItemInfoLockEventArgs.cs.meta | 0
.../DisplayItemShowEventArgs.cs | 0
.../DisplayItemShowEventArgs.cs.meta | 0
.../GameMain/Scripts/Base/Event/MenuForm.meta | 3 ++
.../MenuAboutButtonClickEventArgs.cs | 0
.../MenuAboutButtonClickEventArgs.cs.meta | 0
.../MenuFileButtonClickEventArgs.cs | 0
.../MenuFileButtonClickEventArgs.cs.meta | 0
.../MenuGuideButtonClickEventArgs.cs | 0
.../MenuGuideButtonClickEventArgs.cs.meta | 0
.../MenuQuitButtonClickEventArgs.cs | 0
.../MenuQuitButtonClickEventArgs.cs.meta | 0
.../MenuSettingButtonClickEventArgs.cs | 0
.../MenuSettingButtonClickEventArgs.cs.meta | 0
.../MenuStartGameEventArgs.cs | 0
.../MenuStartGameEventArgs.cs.meta | 0
.../Scripts/Base/Event/SelectRoleForm.meta | 3 ++
.../SelectRoleConfirmEventArgs.cs | 0
.../SelectRoleConfirmEventArgs.cs.meta | 0
.../SelectRoleHoverEventArgs.cs | 0
.../SelectRoleHoverEventArgs.cs.meta | 0
.../SelectRoleReturnEventArgs.cs} | 0
.../SelectRoleReturnEventArgs.cs.meta} | 0
.../GameMain/Scripts/Base/Event/UI/Menu.meta | 8 ---
.../Scripts/Editor/UIRouterComponentEditor.cs | 2 +-
.../Menu/SelectRole/SelectRoleController.cs | 5 +-
.../Presentation/Utility/ItemDescUtility.cs | 32 +++++++++++-
.../Scripts/Procedure/ProcedureMenu.cs | 8 +--
.../CustomComponent/UIRouterComponent.cs | 30 +++++------
.../ProcedureInterface.meta} | 2 +-
.../ProcedureInterface/IProcedureMenu.cs | 7 +++
.../ProcedureInterface/IProcedureMenu.cs.meta | 11 ++++
...{IUIFormController.cs => IUIController.cs} | 2 +-
...ntroller.cs.meta => IUIController.cs.meta} | 0
.../Runtime/UIBase/Base/UIControllerBase.cs | 2 +-
.../Menu/SelectRoleForm/SelectRoleRawData.cs | 4 +-
.../Menu/SelectRoleForm/SelectRoleUseCase.cs | 32 +++---------
Assets/GameMain/UI/UIForms/MenuForm.prefab | 30 +++++++++++
docs/UI-5层架构设计规范.md | 10 ++--
49 files changed, 128 insertions(+), 117 deletions(-)
rename Assets/GameMain/Scripts/Base/Event/{ => Combat}/LevelProcessEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{ => Combat}/LevelProcessEventArgs.cs.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI => }/DialogForm.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI => }/DialogForm/DialogEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI => }/DialogForm/DialogEventArgs.cs.meta (100%)
create mode 100644 Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm.meta
rename Assets/GameMain/Scripts/Base/Event/{ => DisplayItemInfoForm}/DisplayItemInfoHideEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{ => DisplayItemInfoForm}/DisplayItemInfoHideEventArgs.cs.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{ => DisplayItemInfoForm}/DisplayItemInfoLockEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{ => DisplayItemInfoForm}/DisplayItemInfoLockEventArgs.cs.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{ => DisplayItemInfoForm}/DisplayItemShowEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{ => DisplayItemInfoForm}/DisplayItemShowEventArgs.cs.meta (100%)
create mode 100644 Assets/GameMain/Scripts/Base/Event/MenuForm.meta
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuAboutButtonClickEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuAboutButtonClickEventArgs.cs.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuFileButtonClickEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuFileButtonClickEventArgs.cs.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuGuideButtonClickEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuGuideButtonClickEventArgs.cs.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuQuitButtonClickEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuQuitButtonClickEventArgs.cs.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuSettingButtonClickEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuSettingButtonClickEventArgs.cs.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuStartGameEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => MenuForm}/MenuStartGameEventArgs.cs.meta (100%)
create mode 100644 Assets/GameMain/Scripts/Base/Event/SelectRoleForm.meta
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => SelectRoleForm}/SelectRoleConfirmEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => SelectRoleForm}/SelectRoleConfirmEventArgs.cs.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => SelectRoleForm}/SelectRoleHoverEventArgs.cs (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu => SelectRoleForm}/SelectRoleHoverEventArgs.cs.meta (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu/MenuSelectRoleReturnEventArgs.cs => SelectRoleForm/SelectRoleReturnEventArgs.cs} (100%)
rename Assets/GameMain/Scripts/Base/Event/{UI/Menu/MenuSelectRoleReturnEventArgs.cs.meta => SelectRoleForm/SelectRoleReturnEventArgs.cs.meta} (100%)
delete mode 100644 Assets/GameMain/Scripts/Base/Event/UI/Menu.meta
rename Assets/GameMain/Scripts/{Base/Event/UI.meta => Runtime/ProcedureInterface.meta} (77%)
create mode 100644 Assets/GameMain/Scripts/Runtime/ProcedureInterface/IProcedureMenu.cs
create mode 100644 Assets/GameMain/Scripts/Runtime/ProcedureInterface/IProcedureMenu.cs.meta
rename Assets/GameMain/Scripts/Runtime/UIBase/Base/{IUIFormController.cs => IUIController.cs} (87%)
rename Assets/GameMain/Scripts/Runtime/UIBase/Base/{IUIFormController.cs.meta => IUIController.cs.meta} (100%)
diff --git a/Assets/GameMain/Scripts/Base/Definition/DataStruct/StatModifier.cs b/Assets/GameMain/Scripts/Base/Definition/DataStruct/StatModifier.cs
index 8614461..13827e9 100644
--- a/Assets/GameMain/Scripts/Base/Definition/DataStruct/StatModifier.cs
+++ b/Assets/GameMain/Scripts/Base/Definition/DataStruct/StatModifier.cs
@@ -7,61 +7,10 @@ namespace SepCore.Definition
{
public class StatModifier
{
- // None = 0,
- // MaxHealth = 1,
- // MovementSpeed = 2,
- // Attack = 3,
- // Defense = 4,
- // AttackSpeed = 5,
- // Critical = 6,
- // CriticalDamage = 7,
- // Dodge = 8,
- // AbsorbRange = 9
-
- private readonly string[] _statTypeNames =
- {
- "无效",
- "最大生命",
- "移动速度",
- "伤害",
- "防御",
- "冷却",
- "暴击率",
- "暴击伤害",
- "闪避",
- "金币/经验吸收范围"
- };
-
public StatType StatType;
public float Value;
public bool IsPercent;
- public override string ToString()
- {
- if (IsPercent)
- {
- if (Value > 0)
- {
- return $"{_statTypeNames[(int)StatType]}: +{Value * 100}%";
- }
- else
- {
- return $"{_statTypeNames[(int)StatType]}: +{Value * 100}%";
- }
- }
- else
- {
- if (Value > 0)
- {
- return $"{_statTypeNames[(int)StatType]}: +{Value}";
- }
- else
- {
- return $"{_statTypeNames[(int)StatType]}: +{Value}";
- }
- }
- }
-
public static StatModifier StringToModifier(string input)
{
if (string.IsNullOrEmpty(input))
diff --git a/Assets/GameMain/Scripts/Base/Event/LevelProcessEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/Combat/LevelProcessEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/LevelProcessEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/Combat/LevelProcessEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/LevelProcessEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/Combat/LevelProcessEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/LevelProcessEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/Combat/LevelProcessEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/DialogForm.meta b/Assets/GameMain/Scripts/Base/Event/DialogForm.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/DialogForm.meta
rename to Assets/GameMain/Scripts/Base/Event/DialogForm.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/DialogForm/DialogEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/DialogForm/DialogEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/DialogForm/DialogEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/DialogForm/DialogEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/DialogForm/DialogEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/DialogForm/DialogEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/DialogForm/DialogEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/DialogForm/DialogEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm.meta b/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm.meta
new file mode 100644
index 0000000..401efa0
--- /dev/null
+++ b/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 3de64a3f2f644813b51e5145d0a9431c
+timeCreated: 1781403042
\ No newline at end of file
diff --git a/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoHideEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemInfoHideEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/DisplayItemInfoHideEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemInfoHideEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoHideEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemInfoHideEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/DisplayItemInfoHideEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemInfoHideEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoLockEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemInfoLockEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/DisplayItemInfoLockEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemInfoLockEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoLockEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemInfoLockEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/DisplayItemInfoLockEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemInfoLockEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/DisplayItemShowEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemShowEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/DisplayItemShowEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemShowEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/DisplayItemShowEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemShowEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/DisplayItemShowEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/DisplayItemInfoForm/DisplayItemShowEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/MenuForm.meta b/Assets/GameMain/Scripts/Base/Event/MenuForm.meta
new file mode 100644
index 0000000..5e9daab
--- /dev/null
+++ b/Assets/GameMain/Scripts/Base/Event/MenuForm.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 458b35bb1d1848c598f1d318c6523a6a
+timeCreated: 1781402959
\ No newline at end of file
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuAboutButtonClickEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuAboutButtonClickEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuAboutButtonClickEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuAboutButtonClickEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuAboutButtonClickEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuAboutButtonClickEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuAboutButtonClickEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuAboutButtonClickEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuFileButtonClickEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuFileButtonClickEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuFileButtonClickEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuFileButtonClickEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuFileButtonClickEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuFileButtonClickEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuFileButtonClickEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuFileButtonClickEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuGuideButtonClickEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuGuideButtonClickEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuGuideButtonClickEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuGuideButtonClickEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuGuideButtonClickEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuGuideButtonClickEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuGuideButtonClickEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuGuideButtonClickEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuQuitButtonClickEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuQuitButtonClickEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuQuitButtonClickEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuQuitButtonClickEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuQuitButtonClickEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuQuitButtonClickEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuQuitButtonClickEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuQuitButtonClickEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuSettingButtonClickEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuSettingButtonClickEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuSettingButtonClickEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuSettingButtonClickEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuSettingButtonClickEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuSettingButtonClickEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuSettingButtonClickEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuSettingButtonClickEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuStartGameEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuStartGameEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuStartGameEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuStartGameEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuStartGameEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/MenuForm/MenuStartGameEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuStartGameEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/MenuForm/MenuStartGameEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/SelectRoleForm.meta b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm.meta
new file mode 100644
index 0000000..11aedf0
--- /dev/null
+++ b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 15844be485c343f0a94e2e6fcd90022d
+timeCreated: 1781403001
\ No newline at end of file
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/SelectRoleConfirmEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleConfirmEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/SelectRoleConfirmEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleConfirmEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/SelectRoleConfirmEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleConfirmEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/SelectRoleConfirmEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleConfirmEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/SelectRoleHoverEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleHoverEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/SelectRoleHoverEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleHoverEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/SelectRoleHoverEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleHoverEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/SelectRoleHoverEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleHoverEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuSelectRoleReturnEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleReturnEventArgs.cs
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuSelectRoleReturnEventArgs.cs
rename to Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleReturnEventArgs.cs
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuSelectRoleReturnEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleReturnEventArgs.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Base/Event/UI/Menu/MenuSelectRoleReturnEventArgs.cs.meta
rename to Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleReturnEventArgs.cs.meta
diff --git a/Assets/GameMain/Scripts/Base/Event/UI/Menu.meta b/Assets/GameMain/Scripts/Base/Event/UI/Menu.meta
deleted file mode 100644
index 56d13af..0000000
--- a/Assets/GameMain/Scripts/Base/Event/UI/Menu.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 8fc42c90ffa598d4e89c908ad82116d8
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/GameMain/Scripts/Editor/UIRouterComponentEditor.cs b/Assets/GameMain/Scripts/Editor/UIRouterComponentEditor.cs
index d5db972..f47d759 100644
--- a/Assets/GameMain/Scripts/Editor/UIRouterComponentEditor.cs
+++ b/Assets/GameMain/Scripts/Editor/UIRouterComponentEditor.cs
@@ -72,7 +72,7 @@ namespace SepCore.Editor
private void BuildControllerTypeOptions()
{
List controllerTypes = new();
- foreach (Type type in TypeCache.GetTypesDerivedFrom())
+ foreach (Type type in TypeCache.GetTypesDerivedFrom())
{
if (type.IsAbstract || type.IsInterface || type.ContainsGenericParameters)
{
diff --git a/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleController.cs b/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleController.cs
index 7860ebd..e4d0b61 100644
--- a/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleController.cs
+++ b/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleController.cs
@@ -1,6 +1,7 @@
using Cysharp.Threading.Tasks;
using SepCore.Event;
using SepCore.Definition;
+using SepCore.CustomUtility;
using GameFramework.Event;
using UnityEngine;
using UnityGameFramework.Runtime;
@@ -61,7 +62,8 @@ namespace SepCore.UI
propertyContext = new RolePropertyAreaContext
{
RoleName = rawData.SelectedRoleName,
- InitialPropertyText = rawData.SelectedRoleInitialPropertyText
+ InitialPropertyText = ItemDescUtility.CreatePropDescription(rawData.SelectedRoleInitialProperties)
+ ?? string.Empty
};
}
@@ -78,6 +80,7 @@ namespace SepCore.UI
if (userData is SelectRoleRawData rawData)
{
await OpenUIAsync(rawData, timeout);
+ return;
}
if (userData != null)
diff --git a/Assets/GameMain/Scripts/Presentation/Utility/ItemDescUtility.cs b/Assets/GameMain/Scripts/Presentation/Utility/ItemDescUtility.cs
index aa5be72..743fa92 100644
--- a/Assets/GameMain/Scripts/Presentation/Utility/ItemDescUtility.cs
+++ b/Assets/GameMain/Scripts/Presentation/Utility/ItemDescUtility.cs
@@ -25,7 +25,35 @@ namespace SepCore.CustomUtility
{"attackDuration", "突刺时长"},
{"returnDuration", "收枪时长"}
};
-
+
+ private static readonly string[] _statTypeNames =
+ {
+ "无效",
+ "最大生命",
+ "移动速度",
+ "伤害",
+ "防御",
+ "冷却",
+ "暴击率",
+ "暴击伤害",
+ "闪避",
+ "金币/经验吸收范围"
+ };
+
+ public static string Describe(StatModifier modifier)
+ {
+ if (modifier == null)
+ {
+ return string.Empty;
+ }
+
+ string name = _statTypeNames[(int)modifier.StatType];
+ string colorTag = modifier.Value > 0 ? "green" : "red";
+ string suffix = modifier.IsPercent ? "%" : string.Empty;
+ float displayValue = modifier.IsPercent ? modifier.Value * 100 : modifier.Value;
+ return $"{name}: +{displayValue}{suffix}";
+ }
+
public static string CreatePropDescription(StatModifier[] modifiers)
{
if (modifiers == null || modifiers.Length == 0)
@@ -36,7 +64,7 @@ namespace SepCore.CustomUtility
StringBuilder sb = new StringBuilder();
foreach (StatModifier modifier in modifiers)
{
- sb.Append(modifier);
+ sb.Append(Describe(modifier));
sb.Append('\n');
}
diff --git a/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs b/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs
index 12a20ef..580be7a 100644
--- a/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs
+++ b/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs
@@ -7,7 +7,7 @@ using ProcedureOwner = GameFramework.Fsm.IFsm false;
@@ -15,9 +15,9 @@ namespace SepCore.Procedure
private int _selectedRoleId = 0;
- public void StartGame(int selectedRoleId)
+ public void ConfirmSelectRole(int roleId)
{
- _selectedRoleId = selectedRoleId;
+ _selectedRoleId = roleId;
_startGame = true;
}
@@ -29,7 +29,7 @@ namespace SepCore.Procedure
GameEntry.UIRouter.OpenUIAsync(UIFormType.MenuForm);
- var useCase = new SelectRoleUseCase(StartGame);
+ var useCase = new SelectRoleUseCase(this);
GameEntry.UIRouter.BindUIUseCase(UIFormType.SelectRoleForm, useCase);
QualitySettings.vSyncCount = 0;
diff --git a/Assets/GameMain/Scripts/Runtime/CustomComponent/UIRouterComponent.cs b/Assets/GameMain/Scripts/Runtime/CustomComponent/UIRouterComponent.cs
index c110278..68822d1 100644
--- a/Assets/GameMain/Scripts/Runtime/CustomComponent/UIRouterComponent.cs
+++ b/Assets/GameMain/Scripts/Runtime/CustomComponent/UIRouterComponent.cs
@@ -23,8 +23,8 @@ namespace SepCore.UIRouter
[SerializeField] private List _controllerBindings = new();
- private readonly Dictionary _routeControllers = new();
- private readonly Dictionary> _controllerFactories = new();
+ private readonly Dictionary _routeControllers = new();
+ private readonly Dictionary> _controllerFactories = new();
protected override void Awake()
{
@@ -32,7 +32,7 @@ namespace SepCore.UIRouter
RegisterSerializedBindings();
}
- public void RegisterController(UIFormType uiFormType, Func controllerFactory)
+ public void RegisterController(UIFormType uiFormType, Func controllerFactory)
{
if (controllerFactory == null)
{
@@ -40,7 +40,7 @@ namespace SepCore.UIRouter
return;
}
- if (_routeControllers.TryGetValue(uiFormType, out IUIFormController controller))
+ if (_routeControllers.TryGetValue(uiFormType, out IUIController controller))
{
controller.CloseUIAsync().Forget();
_routeControllers.Remove(uiFormType);
@@ -50,14 +50,14 @@ namespace SepCore.UIRouter
}
public void RegisterController(UIFormType uiFormType)
- where TController : IUIFormController, new()
+ where TController : IUIController, new()
{
RegisterController(uiFormType, () => new TController());
}
public void BindUIUseCase(UIFormType uiFormType, IUIUseCase useCase)
{
- IUIFormController controller = GetOrCreateController(uiFormType);
+ IUIController controller = GetOrCreateController(uiFormType);
if (controller == null)
{
return;
@@ -68,7 +68,7 @@ namespace SepCore.UIRouter
public UniTask OpenUIAsync(UIFormType uiFormType, object userData = null, float timeout = 30f)
{
- IUIFormController controller = GetOrCreateController(uiFormType);
+ IUIController controller = GetOrCreateController(uiFormType);
if (controller == null)
{
return default;
@@ -79,7 +79,7 @@ namespace SepCore.UIRouter
public UniTask CloseUIAsync(UIFormType uiFormType, object userData = null, float timeout = 30f)
{
- IUIFormController controller = GetOrCreateController(uiFormType);
+ IUIController controller = GetOrCreateController(uiFormType);
if (controller == null)
{
return UniTask.CompletedTask;
@@ -88,14 +88,14 @@ namespace SepCore.UIRouter
return controller.CloseUIAsync(userData, timeout);
}
- private IUIFormController GetOrCreateController(UIFormType uiFormType)
+ private IUIController GetOrCreateController(UIFormType uiFormType)
{
- if (_routeControllers.TryGetValue(uiFormType, out IUIFormController controller))
+ if (_routeControllers.TryGetValue(uiFormType, out IUIController controller))
{
return controller;
}
- if (!_controllerFactories.TryGetValue(uiFormType, out Func controllerFactory))
+ if (!_controllerFactories.TryGetValue(uiFormType, out Func controllerFactory))
{
Log.Error("UIRouterComponent requires a controller binding for '{0}'.", uiFormType.ToString());
return null;
@@ -141,7 +141,7 @@ namespace SepCore.UIRouter
continue;
}
- if (!typeof(IUIFormController).IsAssignableFrom(controllerType))
+ if (!typeof(IUIController).IsAssignableFrom(controllerType))
{
Log.Warning("UIRouter binding type '{0}' does not implement IUIFormController.",
binding.ControllerTypeName);
@@ -152,10 +152,10 @@ namespace SepCore.UIRouter
}
}
- private static IUIFormController CreateController(Type controllerType)
+ private static IUIController CreateController(Type controllerType)
{
object instance = Activator.CreateInstance(controllerType);
- if (instance is IUIFormController controller)
+ if (instance is IUIController controller)
{
return controller;
}
@@ -165,7 +165,7 @@ namespace SepCore.UIRouter
private void OnDestroy()
{
- foreach (KeyValuePair pair in _routeControllers)
+ foreach (KeyValuePair pair in _routeControllers)
{
pair.Value.CloseUIAsync().Forget();
}
diff --git a/Assets/GameMain/Scripts/Base/Event/UI.meta b/Assets/GameMain/Scripts/Runtime/ProcedureInterface.meta
similarity index 77%
rename from Assets/GameMain/Scripts/Base/Event/UI.meta
rename to Assets/GameMain/Scripts/Runtime/ProcedureInterface.meta
index 2d4e5ac..26f5533 100644
--- a/Assets/GameMain/Scripts/Base/Event/UI.meta
+++ b/Assets/GameMain/Scripts/Runtime/ProcedureInterface.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: f52f9694158bfda42a01330b373cbfe9
+guid: f58e0f571a80e674991b1dca13aa02cb
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/GameMain/Scripts/Runtime/ProcedureInterface/IProcedureMenu.cs b/Assets/GameMain/Scripts/Runtime/ProcedureInterface/IProcedureMenu.cs
new file mode 100644
index 0000000..1a3fc10
--- /dev/null
+++ b/Assets/GameMain/Scripts/Runtime/ProcedureInterface/IProcedureMenu.cs
@@ -0,0 +1,7 @@
+namespace SepCore.Procedure
+{
+ public interface IProcedureMenu
+ {
+ public void ConfirmSelectRole(int roleId);
+ }
+}
diff --git a/Assets/GameMain/Scripts/Runtime/ProcedureInterface/IProcedureMenu.cs.meta b/Assets/GameMain/Scripts/Runtime/ProcedureInterface/IProcedureMenu.cs.meta
new file mode 100644
index 0000000..6c20f07
--- /dev/null
+++ b/Assets/GameMain/Scripts/Runtime/ProcedureInterface/IProcedureMenu.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: beecddd20d3655541a86aafa1d1e31df
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GameMain/Scripts/Runtime/UIBase/Base/IUIFormController.cs b/Assets/GameMain/Scripts/Runtime/UIBase/Base/IUIController.cs
similarity index 87%
rename from Assets/GameMain/Scripts/Runtime/UIBase/Base/IUIFormController.cs
rename to Assets/GameMain/Scripts/Runtime/UIBase/Base/IUIController.cs
index d73d09f..e7d516f 100644
--- a/Assets/GameMain/Scripts/Runtime/UIBase/Base/IUIFormController.cs
+++ b/Assets/GameMain/Scripts/Runtime/UIBase/Base/IUIController.cs
@@ -2,7 +2,7 @@ using Cysharp.Threading.Tasks;
namespace SepCore.UI
{
- public interface IUIFormController
+ public interface IUIController
{
UniTask OpenUIAsync(object userData = null, float timeout = 30f);
diff --git a/Assets/GameMain/Scripts/Runtime/UIBase/Base/IUIFormController.cs.meta b/Assets/GameMain/Scripts/Runtime/UIBase/Base/IUIController.cs.meta
similarity index 100%
rename from Assets/GameMain/Scripts/Runtime/UIBase/Base/IUIFormController.cs.meta
rename to Assets/GameMain/Scripts/Runtime/UIBase/Base/IUIController.cs.meta
diff --git a/Assets/GameMain/Scripts/Runtime/UIBase/Base/UIControllerBase.cs b/Assets/GameMain/Scripts/Runtime/UIBase/Base/UIControllerBase.cs
index 92f4bde..09b53f2 100644
--- a/Assets/GameMain/Scripts/Runtime/UIBase/Base/UIControllerBase.cs
+++ b/Assets/GameMain/Scripts/Runtime/UIBase/Base/UIControllerBase.cs
@@ -5,7 +5,7 @@ using SepCore.AsyncTask;
namespace SepCore.UI
{
- public abstract class UIControllerBase : IUIFormController
+ public abstract class UIControllerBase : IUIController
where TContext : UIContext
where TForm : UGuiForm
{
diff --git a/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleRawData.cs b/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleRawData.cs
index b01ea0c..bb4d6e9 100644
--- a/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleRawData.cs
+++ b/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleRawData.cs
@@ -1,3 +1,5 @@
+using SepCore.Definition;
+
namespace SepCore.UI
{
public class SelectRoleRawData
@@ -6,6 +8,6 @@ namespace SepCore.UI
public string[] RoleIconNames;
public int SelectedRoleId;
public string SelectedRoleName;
- public string SelectedRoleInitialPropertyText;
+ public StatModifier[] SelectedRoleInitialProperties;
}
}
diff --git a/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleUseCase.cs b/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleUseCase.cs
index 39d3edd..24c6f39 100644
--- a/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleUseCase.cs
+++ b/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleUseCase.cs
@@ -1,7 +1,6 @@
-using System;
-using System.Text;
using SepCore.DataTable;
using GameFramework.DataTable;
+using SepCore.Procedure;
using Random = UnityEngine.Random;
namespace SepCore.UI
@@ -10,13 +9,13 @@ namespace SepCore.UI
{
private readonly IDataTable _roleDataTable;
- private readonly Action _onStartGame;
+ private readonly IProcedureMenu _procedureMenu;
public int SelectedRoleId { get; private set; }
- public SelectRoleUseCase(Action onStartGame)
+ public SelectRoleUseCase(IProcedureMenu procedureMenu)
{
- _onStartGame = onStartGame;
+ _procedureMenu = procedureMenu;
_roleDataTable = GameEntry.DataTable.GetDataTable();
}
@@ -48,7 +47,7 @@ namespace SepCore.UI
bool result = SelectedRoleId >= 0;
if (result)
{
- _onStartGame?.Invoke(SelectedRoleId);
+ _procedureMenu.ConfirmSelectRole(SelectedRoleId);
}
return result;
@@ -73,27 +72,8 @@ namespace SepCore.UI
RoleIconNames = iconNames,
SelectedRoleId = selectedRole?.Id ?? -1,
SelectedRoleName = selectedRole?.RoleName,
- SelectedRoleInitialPropertyText = selectedRole != null
- ? BuildRoleInitialPropertyText(selectedRole)
- : null
+ SelectedRoleInitialProperties = selectedRole?.InitialProperties
};
}
-
- private static string BuildRoleInitialPropertyText(DRRole role)
- {
- if (role == null || role.InitialProperties == null || role.InitialProperties.Length == 0)
- {
- return string.Empty;
- }
-
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < role.InitialProperties.Length; i++)
- {
- sb.Append(role.InitialProperties[i]);
- sb.Append('\n');
- }
-
- return sb.ToString();
- }
}
}
diff --git a/Assets/GameMain/UI/UIForms/MenuForm.prefab b/Assets/GameMain/UI/UIForms/MenuForm.prefab
index dd8d626..fa49d09 100644
--- a/Assets/GameMain/UI/UIForms/MenuForm.prefab
+++ b/Assets/GameMain/UI/UIForms/MenuForm.prefab
@@ -255,6 +255,11 @@ PrefabInstance:
propertyPath: m_TargetGraphic
value:
objectReference: {fileID: 345099064574680782}
+ - target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
+ type: 3}
+ propertyPath: m_Navigation.m_Mode
+ value: 3
+ objectReference: {fileID: 0}
- target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
type: 3}
propertyPath: m_Colors.m_SelectedColor.b
@@ -661,6 +666,11 @@ PrefabInstance:
propertyPath: m_TargetGraphic
value:
objectReference: {fileID: 637634966344259004}
+ - target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
+ type: 3}
+ propertyPath: m_Navigation.m_Mode
+ value: 3
+ objectReference: {fileID: 0}
- target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
type: 3}
propertyPath: m_Colors.m_SelectedColor.b
@@ -1062,6 +1072,11 @@ PrefabInstance:
propertyPath: m_TargetGraphic
value:
objectReference: {fileID: 990282440119873477}
+ - target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
+ type: 3}
+ propertyPath: m_Navigation.m_Mode
+ value: 3
+ objectReference: {fileID: 0}
- target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
type: 3}
propertyPath: m_Colors.m_SelectedColor.b
@@ -1463,6 +1478,11 @@ PrefabInstance:
propertyPath: m_TargetGraphic
value:
objectReference: {fileID: 915430015319378619}
+ - target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
+ type: 3}
+ propertyPath: m_Navigation.m_Mode
+ value: 3
+ objectReference: {fileID: 0}
- target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
type: 3}
propertyPath: m_Colors.m_SelectedColor.b
@@ -1870,6 +1890,11 @@ PrefabInstance:
propertyPath: m_TargetGraphic
value:
objectReference: {fileID: 6148722132083568899}
+ - target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
+ type: 3}
+ propertyPath: m_Navigation.m_Mode
+ value: 3
+ objectReference: {fileID: 0}
- target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
type: 3}
propertyPath: m_Colors.m_SelectedColor.b
@@ -2271,6 +2296,11 @@ PrefabInstance:
propertyPath: m_TargetGraphic
value:
objectReference: {fileID: 4891246053961263497}
+ - target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
+ type: 3}
+ propertyPath: m_Navigation.m_Mode
+ value: 3
+ objectReference: {fileID: 0}
- target: {fileID: 4005815405540692376, guid: 0722cd253d6bf014eb4134a2151ec7e3,
type: 3}
propertyPath: m_Colors.m_SelectedColor.b
diff --git a/docs/UI-5层架构设计规范.md b/docs/UI-5层架构设计规范.md
index 43b1454..13acfb3 100644
--- a/docs/UI-5层架构设计规范.md
+++ b/docs/UI-5层架构设计规范.md
@@ -76,7 +76,7 @@ View
约束:
- 实现 `IUIUseCase`
-- 命名:`XXXFormUseCase`
+- 命名:`XXXUseCase`
- 对外提供语义化方法,例如 `CreateInitialModel`、`TryRefresh`、`Select`、`Confirm`
- 返回值只能是 `RawData` 或纯业务结果对象,例如 `XXXResult`、`XXXActionResult`
- 不依赖 `Context`、`View`、`UGuiForm`、`MonoBehaviour` 等 UI 类型
@@ -95,12 +95,12 @@ View
约束:
-- 命名:`XXXFormRawData`
+- 命名:`XXXRawData`
- 只描述业务数据,不包含 UI 展示行为
- 可以包含领域对象、配置对象、标识符、枚举、数值和纯数据集合
- **轻量场景下可携带回调委托**,由 Controller 在构建 Context 前完成注册
- 不允许依赖 `Context`、`View`、`Sprite`、`TMP_Text` 等展示相关类型
-- 不允许直接使用 `XXXItemContext`、`XXXFormContext` 作为字段类型
+- 不允许直接使用 `XXXItemContext`、`XXXContext` 作为字段类型
说明:
@@ -116,7 +116,7 @@ View
- 对启用 `UIRouterComponent` 管理的 UIForm,必须存在可实例化的 Controller 绑定;未绑定时 Router 应直接失败并输出 Error,不允许 fallback 到 `GameEntry.UI.OpenUIForm(...)`
- 命名:`XXXFormController`
-- 可基于 `UIFormControllerBase` 实现
+- 可基于 `UIControllerBase` 实现
- 通过 `BindUseCase(IUIUseCase)` 注入用例并做类型校验
- 当前对外入口为 `OpenUIAsync(object userData = null, float timeout = 30f)` 与 `CloseUIAsync(...)`
- `OpenUIAsync` 只允许外部传入 `RawData` 或可转换为 `RawData` 的参数,不接受外部传入 `Context`
@@ -146,7 +146,7 @@ View
约束:
- 继承 `UIContext`
-- 命名:`XXXFormContext`、`XXXItemContext`、`XXXAreaContext`
+- 命名:`XXXContext`、`XXXItemContext`、`XXXAreaContext`
- 只能由 `Controller` 构建和更新
- 字段以展示友好为目标,例如标题、描述、图标、颜色、状态、列表、按钮文案
- **不允许携带回调委托或行为**,交互行为由 Controller 注册,View 通过 UI 专用事件通知 Controller