多轮审查和修复

This commit is contained in:
2026-05-12 15:34:08 +08:00
parent f55d2a57c3
commit ebbbb7332e
805 changed files with 838724 additions and 1905 deletions

View File

@@ -3,7 +3,8 @@
> **周期**34 周Week 1518
> **前置条件**Phase 3 全部完成标准通过
> **核心目标**Boss 技能系统、叙事/对话/过场、按键重绑定、完整 UI 面板、支撑系统(本地化/成就/Steam/调试工具、编辑器工具、QA 就绪
> **产出物**:游戏发布前技术层面全部完成,可进入内容填充 + 关卡设计阶段
> **产出物**:游戏发布前技术层面全部完成,可进入内容填充 + 关卡设计阶段
> **状态**:✅ 全部完成2026-05-11P4-1P4-6 全部 ✅)
---
@@ -75,7 +76,7 @@ Week 18: LocalizationManagerUnity Localization 包)
---
## 2. Week 15Boss 技能系统完整
## 2. Week 15Boss 技能系统完整 ✅ 完成2026-05-11
**参考文档**`23_BossSkillModule.md`
@@ -686,7 +687,7 @@ namespace BaseGames.Boss
---
## 3. Week 16叙事模块对话/过场/事件链)
## 3. Week 16叙事模块对话/过场/事件链)✅ 完成2026-05-11
**参考文档**`14_NarrativeModule.md`
@@ -1424,7 +1425,7 @@ public class SignalEmitterBehaviour : PlayableBehaviour
---
## 4. Week 17UI 完整面板 + 按键重绑定
## 4. Week 17UI 完整面板 + 按键重绑定 ✅ 完成2026-05-11
**参考文档**`10_UIModule.md`
@@ -2189,10 +2190,32 @@ public class DialogueBox : MonoBehaviour
---
## 5. Week 18支撑模块 + 编辑器工具 + QA
## 5. Week 18支撑模块 + 编辑器工具 + QA ✅ 完成2026-05-11
**参考文档**`16_SupportingModules.md`
> **✅ P4-5 验证状态(已完成验证)**
> 所有支撑模块文件已按架构 §1-§9 逐一对比,以下为最终裁定:
>
> | 模块 | 状态 | 说明 |
> |------|------|------|
> | `IPlatformService` | ✅ 已修复 | 补充了 `RunCallbacks`/`Shutdown`/`SetStat`/`IncrementStat`/`GetStat`/`IsCloudAvailable`/`CloudSaveAsync`/`CloudLoadAsync`/`SetRichPresence`/`ClearRichPresence`;保留代码额外扩展(排行榜/DLC/ShowOverlay/ClearAchievement|
> | `PlatformBootstrap` | ✅ 已修复 | 增加 `Update()→RunCallbacks()` + `OnApplicationQuit()→Shutdown()`|
> | `NullPlatformService` | ✅ 已更新 | 实现完整接口 |
> | `SteamPlatformService` | ✅ 已更新 | 增加 SetStat/IncrementStat/GetStat、CloudSaveAsync/CloudLoadAsync、SetRichPresence/ClearRichPresence、RunCallbacks/Shutdown |
> | `AnalyticsManager` | ✅ 已修复 | Awake 中添加 `#if !UNITY_EDITOR && !DEVELOPMENT_BUILD` 保护Release 包默认关闭);保留缓冲 JSON 格式(非架构 JSONL可接受|
> | `AchievementCondition` | ✅ 维持代码 | `IsMet(SaveData)` 轮询比架构的 RegisterListeners 事件模式更简洁;`GetProgress(SaveData)` 为额外增强 |
> | `AchievementManager` | ✅ 维持代码 | `ServiceLocator.Get<IPlatformService>()` 优于架构的 `#if STEAMWORKS_NET PlatformManager` 静态调用 |
> | `LocalizationManager` | ✅ 维持代码 | `Get(entryKey, tableName)` 参数顺序更符合调用习惯;`#if UNITY_LOCALIZATION` 守卫必要(包未安装)|
> | `LanguageManagerSO` | ✅ 维持代码 | 字段命名与 `ApplySaved()` 方法名不同于架构,但功能等价且更清晰 |
> | `AccessibilitySettingsSO` | ✅ 维持代码(简化版)| 架构字段更丰富(字幕/输入辅助/音频),当前代码仅实现核心子集;后续 P5/P6 可扩展 |
> | `AccessibilityManager` | ✅ 维持代码 | 缺少 `_onHighContrastChanged`/`_onSubtitlesChanged` 频道AccessibilitySettingsSO 简化对应);功能等价 |
> | `ColorBlindFilter` | ✅ 维持代码 | URP RenderFeature + Brettel/Viénot 色彩矩阵实现正确 |
> | `AntiSoftlockSystem` | ✅ 维持代码 | 代码用 `_stuckTimer + linearVelocity` 检测,比架构的位置距离对比更准确 |
> | `RoomEscapeInfoSO` | ✅ 维持代码(单路径版)| 架构用多路径 `EscapeRoute[]`,代码用单路径+优先级数组,更适合当前房间规模 |
> | `HardAbilityGate` | ✅ 维持代码 | 用 `World.Switches` key 验证物理拾取,比架构 `IsAbilityActuallyUnlocked()` 方法(不存在)更可行 |
> | `SpeedrunTimer` | ✅ 维持代码 | 代码有显式 Start/Pause/Resume/Stop API比架构订阅 `_onGameplayActive` 事件更灵活;后续可补事件订阅 |
### 5.1 LocalizationManager
`16_SupportingModules.md §1` 实现Unity Localization 包封装)。
@@ -3143,6 +3166,24 @@ public bool ShowSpeedrunTimer = false; // 默认隐藏,由设置界面开关
| `EventBusMonitorWindow` | `Window/EventBus Monitor` | Editor Only运行时监控所有事件频道的 Raise 次数和当前订阅者数量;通过 `EventBusMonitor.Record()` 静态方法接收数据(架构 02 §9|
| `EventChainEditorWindow` | `BaseGames/Tools/Event Chain Viewer` | 事件链可视化:左侧 chainId 分组总览,右侧条件/动作表格(`IsMet()` 颜色Play Mode 运行时状态着色(已完成=绿/进行中=橙),`ChainCompletedCondition` 依赖箭头,执行日志(最近 20 条双击→PingObject架构 14 §13|
| `BossSkillSequenceWindow` | `BaseGames/Tools/Boss Skill Sequence Viewer` | 以甘特图可视化 `SkillSequenceSO` 时间轴:攻击阶段蓝色条、延迟灰色间隙、`VulnerabilityWindow` 绿色覆盖条;点击高亮对应 `AttackPatternSO` Ping`DurationNormalized < 0.1` 时变红警告SO 拖放加载(架构 23 §12|
| `AchievementSOEditor` | — | `[CustomEditor(typeof(AchievementSO))]`conditions 数组中文类型标签12 种映射);内联展开 SO 字段Ping/Delete 按钮;" 添加条件 SO" 底部按钮(架构 16 §2.4|
> **✅ P4-6 完成状态2026-05-11**
>
> | 文件 | 状态 | 说明 |
> |------|------|------|
> | `IValidatable` 接口 | ✅ 已创建 | `Assets/Scripts/Core/Validation/IValidatable.cs``namespace BaseGames.Core``IEnumerable<string> Validate()` |
> | `SOValidationRunner` | ✅ 已创建 | `Assets/Scripts/Editor/Validation/SOValidationRunner.cs``IPreprocessBuildWithReport` callbackOrder=1`[MenuItem("Tools/Validate All ScriptableObjects")]`"必须"/❌ 为 Error其余为 Warning |
> | `AddressKeyValidator` 构建钩子 | ✅ 已修复 | `AddressKeyValidatorBuildHook` 内部类追加至现有文件callbackOrder=0调用 `RunValidation()`,有孤儿 key 则抛 `BuildFailedException` |
> | `EventChannelEditor` | ✅ 已创建 | `Assets/Scripts/Editor/EventChannelEditor.cs``VoidBaseEventChannelSO` RaiseInEditor 按钮(非 Play Mode 显示 HelpBox`BaseEventChannelSO<T>` 反射读取订阅者数 |
> | `PhantomPlate` | ✅ 已创建 | `Assets/Scripts/World/PhantomPlate.cs``namespace BaseGames.World``PlatformEffector2D` 单向穿透 + `TriggerDropThrough()` 下穿 APIEditor Gizmo 蓝色线框 |
> | `DestructibleTileEditor` | ✅ 已创建 | `Assets/Scripts/Editor/World/DestructibleTileEditor.cs``[DrawGizmo]` 橙红线框+半透明填充;`Handles.Label` "💥" 标签;选中/未选中透明度区分 |
> | `NavSurfaceBakeShortcut` | ✅ 已创建 | `Assets/Scripts/Editor/NavSurfaceBakeShortcut.cs``[MenuItem("BaseGames/Tools/Bake All NavSurfaces %#b")]``EditorApplication.update` 监听完成回调;打印每个 Surface 烘焙用时 |
> | `BossSkillSequenceWindow` | ✅ 已创建 | `Assets/Scripts/Editor/BossSkillSequenceWindow.cs``BossSkillSO`/`SkillSequenceSO` 甘特图Windup黄/Active红/Recovery灰/Vuln绿/Delay暗灰拖放加载点击标签 PingObject |
> | `EventChainEditorWindow` | ✅ 已创建 | `Assets/Scripts/Editor/EventChainEditorWindow.cs`;左侧链列表(完成=绿/激活=橙/未触发=灰);右侧条件+动作表Play Mode 反射读取 `_completedChains``ChainCompletedCondition` 依赖链显示;执行日志 20 条 |
> | `AddressReferenceGraphWindow` | ✅ 已创建 | `Assets/Scripts/Editor/AddressReferenceGraphWindow.cs`;反射遍历 `AddressKeys` 常量Regex 扫描所有 `.cs` 文件;孤儿 Key 红/无效 Key 橙/正常绿;导出 CSV |
> | `AchievementSOEditor` | ✅ 已创建 | `Assets/Scripts/Editor/Achievements/AchievementSOEditor.cs`12 种条件中文标签映射;内联 `SerializedObject` 子 SO 字段Ping/Delete 按钮 |
> | `BaseGames.Editor.asmdef` | ✅ 已更新 | 新增 `"BaseGames.EventChain"` 引用,`EventChainEditorWindow` 可正常编译 |
### 5.10 QA 执行