添加场景、对应场景代码
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace GameFramework
|
||||
{
|
||||
/// <summary>
|
||||
/// 游戏结束画面。
|
||||
/// 监听 GameManager.onGameOver 事件,显示结束 Canvas 并暂停游戏。
|
||||
/// 玩家按确认键或点击按钮后跳转到排行榜场景。
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user