- 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)
52 lines
1.4 KiB
C#
52 lines
1.4 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using TMPro;
|
|
using BaseGames.Core.Events;
|
|
|
|
namespace BaseGames.UI.Menus
|
|
{
|
|
public class DeathScreenController : MonoBehaviour
|
|
{
|
|
[SerializeField] private TMP_Text _deathMessage;
|
|
[SerializeField] private Button _btnRespawn;
|
|
|
|
[Header("Event Channels")]
|
|
[SerializeField] private VoidEventChannelSO _onDeathScreenConfirmed;
|
|
|
|
private void OnEnable()
|
|
{
|
|
// 死亡界面由 UIManager 在游戏状态变为 Dead 时通过 SetActive(true) 激活。
|
|
// _onPlayerDied 事件此时已经触发完毕,订阅它不会收到回调。
|
|
// 直接在 OnEnable 启动延迟显示协程即可保证 1.5s 缓冲。
|
|
StartCoroutine(ShowAfterDelay(1.5f));
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
StopAllCoroutines();
|
|
}
|
|
|
|
private IEnumerator ShowAfterDelay(float delay)
|
|
{
|
|
yield return new WaitForSeconds(delay);
|
|
Show();
|
|
}
|
|
|
|
private void Show()
|
|
{
|
|
if (_btnRespawn != null)
|
|
{
|
|
_btnRespawn.onClick.RemoveAllListeners();
|
|
_btnRespawn.onClick.AddListener(Confirm);
|
|
}
|
|
}
|
|
|
|
private void Confirm()
|
|
{
|
|
gameObject.SetActive(false);
|
|
_onDeathScreenConfirmed?.Raise();
|
|
}
|
|
}
|
|
}
|