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

[Unity/2D] isPlay 변수로 게임시간의 소수점값이 미세하게 달라지는 현상 방지하기

테크러너 2024. 4. 1.

실제 게임시간과 게임종료시 뜨는 점수판의 게임시간이 미세한 오차로 나타나는 현상이 일어날 수 있습니다.

이를 방지하고자 isPlay라는 bool 자료형의 변수를 활용해보겠습니다.

 

이러한 오차가 발생하는 이유는 Time.timeScale = 0.0f; 때문입니다.

아래 게시글에서 '0초가 되었을 때 게임 종료 화면 활성화하기' 부분의 맨마지막 '더보기'란을 참고해주세요.

2024.03.28 - [Unity/2D] - [Unity/2D] 시간 감소 및 게임 종료, 프레임 - anchor(앵커), Time.deltaTime, Time.timeScale, ToString

 

    bool isPlay = true; // 타임의 소수점값이 미세하게 달라지는 것마저 방지하기 위한 변수 선언

    float time = 0.0f;

    void Update()
    {
        if (isPlay) // 게임 플레이시에만(조금 더 정확한 타임값 도출 가능)
        {
            time += Time.deltaTime;
            timeTxt.text = time.ToString("N2"); // 소수점 두 번째자리까지
        }
    }

    public void GameOver()
    {
        isPlay = false; 
        Time.timeScale = 0.0f; // 타임의 크기 = 0 -> 멈춘것과 같음
        nowScore.text = time.ToString("N2");
        endPanel.SetActive(true);
    }

isPlay 가 true 일 때는 게임이 진행중이고,

isPlay 가 false 일 때는 게임이 멈춘 상태를 의미합니다.

 

isPlay 변수로 게임의 상태를 관리해주면 정확한 시간의 흐름을 제어할 수 있고, 미세한 값의 변화를 방지할 수 있습니다.

 

반응형

댓글