52 lines
2.3 KiB
C#
52 lines
2.3 KiB
C#
using UnityEngine; // 유니티 엔진의 기본 기능을 불러올거에요 -> UnityEngine을
|
|
using UnityEngine.SceneManagement; // 씬 관리 기능을 사용할거에요 -> UnityEngine.SceneManagement를
|
|
|
|
public class GameStopPanelController : MonoBehaviour // 클래스를 선언할거에요 -> MonoBehaviour를 상속받는 GameStopPanelController를
|
|
{
|
|
[Header("UI 요소")] // 인스펙터 창에 제목을 표시할거에요 -> UI 요소 를
|
|
[SerializeField] private GameObject stopPanel; // 변수를 선언할거에요 -> 일시정지 패널 오브젝트인 stopPanel을
|
|
|
|
private bool isPaused = false; // 변수를 초기화할거에요 -> 일시정지 상태 여부를 거짓으로
|
|
|
|
private void Update() // 함수를 실행할거에요 -> 매 프레임마다 Update를
|
|
{
|
|
// ESC 키 입력 감지
|
|
if (Input.GetKeyDown(KeyCode.Escape)) // 조건이 맞으면 실행할거에요 -> ESC 키를 눌렀다면
|
|
{
|
|
TogglePause(); // 함수를 실행할거에요 -> 일시정지 상태를 변경하는 TogglePause를
|
|
}
|
|
}
|
|
|
|
public void TogglePause() // 함수를 선언할거에요 -> 일시정지를 켜고 끄는 TogglePause를
|
|
{
|
|
isPaused = !isPaused; // 상태를 뒤집을거에요 -> 일시정지 여부를 반대로
|
|
|
|
if (stopPanel != null) stopPanel.SetActive(isPaused); // 설정을 바꿀거에요 -> 패널의 활성화 상태를 isPaused 값대로
|
|
|
|
if (isPaused) // 조건이 맞으면 실행할거에요 -> 일시정지 상태라면
|
|
{
|
|
Time.timeScale = 0f; // 값을 설정할거에요 -> 시간을 멈춤으로
|
|
}
|
|
else // 조건이 틀리면 실행할거에요 -> 게임 진행 상태라면
|
|
{
|
|
Time.timeScale = 1f; // 값을 설정할거에요 -> 시간을 정상 속도로
|
|
}
|
|
}
|
|
|
|
// "메인 메뉴로" 버튼에 연결할 함수
|
|
public void GoToMainMenu() // 함수를 선언할거에요 -> 메인 메뉴로 이동하는 GoToMainMenu를
|
|
{
|
|
Time.timeScale = 1f; // 값을 복구할거에요 -> 멈춘 시간을 정상으로 (씬 이동 전에 필수)
|
|
SceneManager.LoadScene("MainMenu"); // 실행할거에요 -> "MainMenu" 씬을 로드하는 기능을
|
|
}
|
|
|
|
// "게임 종료" 버튼에 연결할 함수
|
|
public void QuitGame() // 함수를 선언할거에요 -> 게임을 종료하는 QuitGame을
|
|
{
|
|
#if UNITY_EDITOR // 조건부 컴파일을 할거에요 -> 유니티 에디터 환경이라면
|
|
UnityEditor.EditorApplication.isPlaying = false; // 설정을 바꿀거에요 -> 플레이 모드를 끄기로
|
|
#else // 그 외 환경(빌드)이라면
|
|
Application.Quit(); // 실행할거에요 -> 어플리케이션 종료를
|
|
#endif // 조건부 컴파일을 끝낼거에요
|
|
}
|
|
} |