PacMan/Assets/Scripts/PauseManager.cs

103 lines
2.5 KiB
C#
Raw Normal View History

2025-03-17 21:56:02 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
2025-03-17 21:56:02 +08:00
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PauseManager : MonoBehaviour
{
public PacManInput pacManInputControl;//<2F><><EFBFBD><EFBFBD>ϵͳ
public GameObject PauseMenu;//<2F><><EFBFBD>Ͻǵ<CFBD><C7B5><EFBFBD>ͣ<EFBFBD>˵<EFBFBD>
public GameObject PauseButton;//esc<73>Ĵ򿪲˵<F2BFAAB2>
public GameObject DieMenu;//<2F><><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>
public GameObject StartMenu;//<2F><>ʼ<EFBFBD>˵<EFBFBD>
public GameObject WinMenu;//ʤ<><CAA4><EFBFBD>˵<EFBFBD>
public Sprite[] pauseSprite;//<2F><><EFBFBD>Ͻǵ<CFBD><C7B5><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<CDBC>л<EFBFBD>
2025-03-17 21:56:02 +08:00
private bool isPaused = false;
public PacMan pacManScript;//<2F><>ק<EFBFBD><D7A7>ֵ
2025-03-17 21:56:02 +08:00
private void Awake()
{
pacManInputControl = new PacManInput();//newһ<77><D2BB><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>ϵͳ
if (!GameManager.instance.GameStart)
{
StartTogglePause();
}
if(GameManager.instance.DotNum <= 0)
{
WinMenu.SetActive(true);
Time.timeScale = 0;
pacManInputControl.Disable();
}
2025-03-17 21:56:02 +08:00
}
private void OnEnable()
{
pacManInputControl.Enable();
}
private void OnDisable()
{
pacManInputControl.Disable();
}
void Update()
{
// <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><D3BC>̿<EFBFBD><CCBF>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>ESC<53><43><EFBFBD><EFBFBD>
if(GameManager.instance.GameStart)
{
pacManInputControl.PacManInputSystem.Menu.performed += ctx => TogglePause();
}
if (pacManScript.die)
{
DieTogglePause();
pacManScript.die = false;
}
2025-03-17 21:56:02 +08:00
}
// <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>󶨷<EFBFBD><F3B6A8B7><EFBFBD>
public void TogglePause()
{
isPaused = !isPaused;
PauseMenu.SetActive(isPaused);
PauseButton.gameObject.GetComponent<Image>().sprite = isPaused ? pauseSprite[0] : pauseSprite[1];
Time.timeScale = isPaused ? 0 : 1;
}
public void DieTogglePause()
{
isPaused = !isPaused;
Time.timeScale = 0;
DieMenu.SetActive(isPaused);
pacManInputControl.Disable();
// pacManInputControl.PacManInputSystem.Menu.Disable();
}
public void StartTogglePause()
{
StartMenu.SetActive(true);
Time.timeScale = 0;
pacManInputControl.Disable();
// pacManInputControl.PacManInputSystem.Menu.Disable();
}
2025-03-17 21:56:02 +08:00
public void RestartGame()
{
Time.timeScale = 1;
GameManager.instance.GameStart = true;
2025-03-17 21:56:02 +08:00
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
public void QuitGame()
{
Application.Quit();
}
}