UI 버튼 동작들을 하나의 ButtonManager 스크립트에서 관리한다
ButtonManager스크립트가 가장 쉬웠다
-> 하나의 스크립트에서 모든 걸 정의해두고 버튼들에OnClick()동작만 해주면 되기 때문이다
Pause_Button의 버튼 컴포넌트에 On Click()함수로 지정한다
-> 이 버튼 컴포넌트가 해당 함수로 연결되있는 상태

버튼같은 경우는 한곳에 다 작성해도 괜찮다
-> 필요한 함수들만 적용시켜두면 됨
정지버튼을 누르면 timesacle이 0이 되어 모든 행동들이 정지된다
-> 정지버튼과 나가기 버튼 모두 누르면 정지되어야한다
-> exitMenu UI가 활성화 되었는데, 뒤에 게임이 진행되고 있으면 안된다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ButtonManager : MonoBehaviour
{
// 게임중지 팝업 이미지
[SerializeField] GameObject exitMenu;
private bool isPause;
private void Start()
{
isPause = false;
}
// 시작부터 비활성화
private void Awake()
{
exitMenu.SetActive(false);
}
public void Exit()
{
Debug.Log("클릭");
Time.timeScale = 0;
exitMenu.SetActive(true);
}
public void Exitcancel()
{
Debug.Log("창닫기");
exitMenu.SetActive(false);
Time.timeScale = 1;
}
public void ExitButtonClick()
{
SceneManager.LoadScene("LobbyScene");
}
// 정지 클릭 시 일시정지
public void Pause()
{
if (isPause == false)
{
Debug.Log("일시정지");
Time.timeScale = 0;
isPause = true;
return;
}
if (isPause == true)
{
Debug.Log("일시정지 해제");
Time.timeScale = 1;
isPause = false;
return;
}
}
}

Time.timescale시간이 흐르는 정도를 나타낸다
Time.timeScale = 1f -> 시간이 정상적으로 흐르고 있는 상태Time.timeScale = 0.5f -> 원래 속도보다 0.5배 느리게 흐르는 상태Time.timeScale = 0f -> 원래 속도보다 0배 느리게 흐르는 상태일시정지 버튼을 누르면 정지하는 기능을 구현한 코드
bool 타입의 isPause 변수를 선언하고 false인 경우 정지, true상태에서 버튼 클릭 시 다시 시간이 동작하고 isPause = false;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class BackButtonClick : MonoBehaviour
{
[SerializeField] Button stage1;
[SerializeField] Button stage2;
private void Awake()
{
// 버튼 첫 시작 비활성화
stage1.gameObject.SetActive(false);
stage2.gameObject.SetActive(false);
}
public void Stage1Click()
{
stage1.gameObject.SetActive(true);
stage1.interactable = true;
}
public void Stage2Click()
{
stage2.gameObject.SetActive(true);
stage2.interactable = true;
}
public void OnBackButtonClick()
{
SceneManager.LoadScene("TitleScene");
}
public void Stage1StartClick()
{
SceneManager.LoadScene("GameScene");
}
}

지금 일시정지 상태에서는 배경음이 계속 실행되고 있다
-> 일시정지 상태일땐 배경음이 안나오게 할까, 아니면 이대로 실행되는 상태로 냅둘까 고민해보자