v11 全量评审:修复 TD-13 至 TD-17

- TD-13: IQuestManager.CompleteQuest 改用 IRewardTarget,移除 using BaseGames.Player
- TD-14: HurtFlashController 缓存 WaitForSeconds(_waitForFlash 字段)
- TD-16: LiquidType 枚举迁移至 BaseGames.Core.Events;LiquidEvent.LiquidType 改为枚举直接比较
- TD-17: DeathScreenController 移除失效的 _onPlayerDied 订阅,改为 OnEnable 直接启动延迟显示

影响文件: IQuestManager.cs / HurtFlashController.cs / LiquidType.cs(迁移) /
  LiquidEvent.cs / LiquidZone.cs / WaterDangerState.cs /
  UnderwaterPostProcessingController.cs / UnderwaterAudioController.cs /
  DeathScreenController.cs

评审文档: Docs/Review/FrameworkReview_2026_May_v11.md(综合评分 9.30/10)
This commit is contained in:
2026-05-12 16:34:03 +08:00
parent 9284278578
commit 1135139bc6
12 changed files with 554 additions and 32 deletions

View File

@@ -12,15 +12,20 @@ namespace BaseGames.UI.Menus
[SerializeField] private Button _btnRespawn;
[Header("Event Channels")]
[SerializeField] private VoidEventChannelSO _onPlayerDied;
[SerializeField] private VoidEventChannelSO _onDeathScreenConfirmed;
private readonly CompositeDisposable _subs = new();
private void OnEnable()
{
// 死亡界面由 UIManager 在游戏状态变为 Dead 时通过 SetActive(true) 激活。
// _onPlayerDied 事件此时已经触发完毕,订阅它不会收到回调。
// 直接在 OnEnable 启动延迟显示协程即可保证 1.5s 缓冲。
StartCoroutine(ShowAfterDelay(1.5f));
}
private void OnEnable() => _onPlayerDied?.Subscribe(OnPlayerDied).AddTo(_subs);
private void OnDisable() => _subs.Clear();
private void OnPlayerDied() => StartCoroutine(ShowAfterDelay(1.5f));
private void OnDisable()
{
StopAllCoroutines();
}
private IEnumerator ShowAfterDelay(float delay)
{
@@ -30,7 +35,6 @@ namespace BaseGames.UI.Menus
private void Show()
{
gameObject.SetActive(true);
if (_btnRespawn != null)
{
_btnRespawn.onClick.RemoveAllListeners();