using UnityEngine; using UnityEngine.UI; namespace GameFramework { /// /// 游戏结束画面。 /// 监听 GameManager.onGameOver 事件,显示结束 Canvas 并暂停游戏。 /// 玩家按确认键或点击按钮后跳转到排行榜场景。 /// public class GameOverScreen : MonoBehaviour { [Header("Canvas")] [SerializeField] Canvas gameOverCanvas; [Header("Button")] [SerializeField] Button confirmButton; [Header("Audio")] [SerializeField] AudioData gameOverSFX; [Header("Input")] [SerializeField] KeyCode confirmKey = KeyCode.Return; void OnEnable() { GameManager.onGameOver += ShowGameOver; } void OnDisable() { GameManager.onGameOver -= ShowGameOver; } void Start() { // 初始隐藏 if (gameOverCanvas != null) gameOverCanvas.enabled = false; if (confirmButton != null) confirmButton.onClick.AddListener(OnConfirmClick); } void ShowGameOver() { // 显示结束画面 if (gameOverCanvas != null) gameOverCanvas.enabled = true; // 暂停游戏 if (TimeController.Instance != null) TimeController.Instance.Pause(); // 显示鼠标 Cursor.visible = true; Cursor.lockState = CursorLockMode.None; // 选中确认按钮 if (confirmButton != null) confirmButton.Select(); // 播放音效 if (AudioManager.Instance != null && gameOverSFX != null) AudioManager.Instance.PlaySFX(gameOverSFX); } void Update() { // 游戏结束画面可见时,按确认键跳转 if (gameOverCanvas != null && gameOverCanvas.enabled) { if (Input.GetKeyDown(confirmKey) || Input.GetKeyDown(KeyCode.Space)) { OnConfirmClick(); } } } void OnConfirmClick() { // 先解除暂停 if (TimeController.Instance != null) TimeController.Instance.Unpause(); // 跳转到排行榜场景 if (SceneLoader.Instance != null) SceneLoader.Instance.LoadScoringScene(); } } }