Quiz Master[완]

chory·2023년 2월 10일
0

Udemy

목록 보기
12/12

마지막으로, 모든 문제를 풀고 나면 종료 화면으로 전환되는 처리와 리플레이 버튼 클릭 시 씬이 리로드되는 처리를 구현해 본다.

WinCanvas라는 이름으로 캔버스를 하나 생성해 주고, 자식 오브젝트로 최종 점수를 나타낼 TMP와 리플레이 버튼을 추가해 준다.

UI 크기 및 위치를 조정해 주고, EndScreen이라는 이름의 스크립트를 통해 기능을 구현해 준다.

[SerializeField] TextMeshProUGUI finalScoreText;
// scorekeeper 스크립트 사용을 위한 변수 선언
ScoreKeeper scoreKeeper;
    
void Awake()
{
	// 변수 초기화
    scoreKeeper = FindObjectOfType<ScoreKeeper>();
}

// 최종 점수 텍스트 출력 메소드
public void ShowFinalScore()
{
    finalScoreText.text = "Congratulations!\nYou got a score of " + scoreKeeper.CalculateScore() + "%";
}

이제 게임 진행 상황에 따라 각 캔버스를 전환해줄 GameManager 스크립트를 만들어 준다.

// QuizCanvas, WinCanvas 세팅을 위한 변수 선언
Quiz quiz;
EndScreen endScreen;

void Awake()
{
	// QuizCanvas, WinCanvas 변수 초기화
    quiz = FindObjectOfType<Quiz>();
    endScreen = FindObjectOfType<EndScreen>();
}

void Start()
{
	// 게임 시작 시 QuizCanvas 활성화, WinCanvas 비활성화
    quiz.gameObject.SetActive(true);
    endScreen.gameObject.SetActive(false);
}

void Update()
{
	// 게임 종료 시 
    if (quiz.isComplete)
    {
    	// QuizCanvas 비활성화, WinCanvas 활성화
        quiz.gameObject.SetActive(false);
        endScreen.gameObject.SetActive(true);
        // WinCanvas에 최종 점수 표시
        endScreen.ShowFinalScore();
    }
}

// 씬 리로드 메소드
public void OnReplayLevel()
{
    SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); 
}

이렇게 객관식 퀴즈 게임의 제작을 모두 완료했다 !

profile
게임 만들고 싶어요

0개의 댓글