EndPanel 띄우기
이제 시간이 0인, 게임이 종료된 상태에서 EndPanel을 켜보자
마찬가지로 EndPanel오브젝트를 가져오기 위해 GameManager에 변수를 만들어준다.
public GameObject endPanel;
그리고 유니티에서 GameManager에 endPanel을 드래그 앤 드롭으로 넣어준다.
지금은 endPanel이 보이지 않도록 꺼져있는데, 이를 게임이 종료되었을 때 나올 수 있도록 조절을 해야한다.
endPanel이 켜지는 시점은 time이 0이 되는 시점이다. 따라서 totalTime이 0이 되었을 때 endPanel이 보이도록 해보자.
void Update()
{
if (totalTime > 0)
{
totalTime -= Time.deltaTime;
}
else
{
totalTime = 0f;
//totaltime이 0이되었을때 endPanel활성화(켜줌)
endPanel.SetActive(true);
Time.timeScale = 0f;
}
timeTxt.text = totalTime.ToString("N2");
}
endPanel.SetActive(true)를 해줌으로써, totalTime이 0이 되었을 때 endPanel이 화면에 띄워지게끔 할 수 있다.
endPanel을 통한 게임 다시 시작
endPanel을 눌렀을 때 게임 다시 시작 기능을 구현하기 위해 RetryButton이라는 Script를 하나 만들어준다.
그리고 EndPanel의 AddComponet를 눌러 Button을 추가한다(RetryButtonX ButtonO)
RetryButton Script
RetryButton Script를 열어준 후 start와 update함수를 다 지워준 후, 아래의 패키지를 불러온다.
using UnityEngine.SceneManagement;
public class RetryButton : MonoBehaviour
{
public void Retry()
{
SceneManager.LoadScene("MainScene");
}
}
📌 MainScene을 불러오기 위해 SceneManager사용
📌 LoadScene("MainScene")은 "MainScene"이라는 이름의 Scene을 로드해줘라 라는 뜻
이제 다시 시작 버튼을 눌렀을 때 Retry함수가 호출될 수 있게 Unity로 돌아간다.
우선 RetryButton 스크립트을 EndPanel에 추가한다.
EndPanel의 Button내 On Click()은, 버튼이 눌렸을 때 실행되는 것이다.
On Click아래의 +버튼을 눌러준다.
그리고 None부분에 EndPanel을 드래그 앤 드롭으로 넣어준다.
그러면 이렇게 No Function버튼이 활성화가 되어 아래 여러 메뉴창이 뜨는데,
확인해보면 메뉴에는 EndPanel의 Inspector에 붙어있는 컴포넌트들의 이름이 있는 것을 확인 할 수 있다.
RetryButton > Retry()를 선택해준다.
순서는 EndPanel이 뜨고 → 다시 Main Scene이 로드되면서 → 게임이 처음부터 실행되는 것이다.
*만약 다시시작 버튼을 눌렀는데도 MainScene이 로드되지않았을 경우
메뉴 상단 > File > Build Settings > Build Settings에 Scene/MainScene가 있는지 확인 > 만약 없다면 오른쪽 하단에 Add Open Scenes을 눌러 추가해준다.
하지만 이렇게만 하면 Time.timeScale이 0이 된 상태라 시간이 멈춰있기 때문에, 다시 TimeScale을 1로 올려주는 작업이 필요하다.
GameManager의 Awake함수에 Time.timeScale = 1.0f를 추가해주자.
private void Awake()
{
Instance = this;
Time.timeScale = 1.0f;
}
이렇게 하면 다시시작버튼을 클릭시 게임이 재시작 되는 것을 확인할 수 있다!
결과화면
'GameDevelop > Unity기초쌓기' 카테고리의 다른 글
[Unity] ProtectBalloon기본 세팅 (0) | 2025.04.03 |
---|---|
[Unity] 점수감소되는 빨간빗방울 추가하기 (0) | 2025.04.01 |
[Unity] 타이머 Time.timeScale = 0f; (0) | 2025.03.30 |
[Unity] 게임종료UI (0) | 2025.03.29 |
[Unity] 올라가는 점수값 UI표시 - Text타입 (0) | 2025.03.29 |