스파르타 게임개발종합반(Unity)/사전캠프 공부 기록

[Unity/2D] 게임 재시작 및 버튼 만들기 - On Click, Button, Time.timeScale

테크러너 2024. 3. 28.

이전편

2024.03.28 - [Unity/2D] - [Unity/2D] 시간 감소 및 게임 종료

 

게임 재시작 버튼 만들기

EndPanel 에 Button 컴포넌트를 추가해주었습니다.

 

using UnityEngine.SceneManagement;

public class RetryButton : MonoBehaviour
{
    // 버튼이 클릭될 때 Retry() 함수 실행
    public void Retry()
    {
        // 'MainScene'이라는 씬 로드
        SceneManager.LoadScene("MainScene");
    }
}
 

'RetryButton' 이라는 스크립트도 생성해주었습니다.

 

해당 스크립트를 EndPanel에 넣어주었습니다.

 

Button 컴포넌트에 On Click () 에서 '+' 버튼을 클릭합니다.

 

그럼 위와 같이 뜨는데, 'None' 이라고 적힌 곳에 'EndPanel'을 넣어주도록 합니다.

 

그러면 'No Function' 이라는 부분이 활성화가 된 것을 확인할 수 있습니다.

 

No Function → RetryButton → Retry() 순서로 클릭해주었습니다.

 

그러면 EndPanel이 뜨고, EndPanel을 눌렀을 때 Retry 함수가 호출이 됩니다.

Retry 함수에는 MainScene 을 불러오는 코드가 있으니까 다시 MainScene이 로드되면서 게임이 처음부터 실행됩니다.

 

 

결과

 

게임종료 화면을 누르면 게임이 다시 시작되기는 하지만 빗물이 멈추고, 시간도 그대로입니다.

아까 Time.timeScale을 0f로 만들어주었죠? 이걸 다시 1f로 변경해주어야 원래대로 돌아옵니다.

 

혹시라도 메인씬으로 안돌아와진다면!

더보기

File → Build Settings... 클릭

'Scenes/MainScene' 이 추가되어있는지 확인!

추가되어있지 않다면 'Add Open Scenes'로 추가~!

 

 

Time.timeScale 을 다시 1f로 변경(게임 시간 다시 흐르기)

GameManager.cs

    private void Awake()
    {
        Instance = this; // Instance 변수에 this(내 자신의 데이터)를 넣어준다.
        Time.timeScale = 1.0f; // 게임 재시작시 다시 게임이 흐르기 위해
    }
 

 

 

결과

 

 

 

 

 

모바일 화면 크기 설정이 궁금하다면?

2024.03.28 - [Unity/기타] - [Unity] 모바일 크기 설정 / 디스플레이 설정

반응형

댓글