실제 게임시간과 게임종료시 뜨는 점수판의 게임시간이 미세한 오차로 나타나는 현상이 일어날 수 있습니다.
이를 방지하고자 isPlay라는 bool 자료형의 변수를 활용해보겠습니다.
이러한 오차가 발생하는 이유는 Time.timeScale = 0.0f; 때문입니다.
아래 게시글에서 '0초가 되었을 때 게임 종료 화면 활성화하기' 부분의 맨마지막 '더보기'란을 참고해주세요.
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 변수로 게임의 상태를 관리해주면 정확한 시간의 흐름을 제어할 수 있고, 미세한 값의 변화를 방지할 수 있습니다.
반응형
'스파르타 게임개발종합반(Unity) > 사전캠프 공부 기록' 카테고리의 다른 글
[Unity/2D] 풍선 터지는 애니메이션 만들기, New Clip(클립) 만들기 - Animation, Animator, Create New Clip (0) | 2024.04.02 |
---|---|
[Unity] 앱을 껐다 켜도 데이터 유지 및 보관하기, 데이터 저장하기 - PlayerPrefs (0) | 2024.04.01 |
[Unity] GameManager 싱글톤 패턴 - Singleton (0) | 2024.04.01 |
[Unity/2D] 쉐도우 효과 넣기 - Shadow, UI (0) | 2024.03.29 |
[Unity] 스크린상의 마우스 좌표를 카메라가 찍고 있는 월드 좌표로 바꾸기 - ScreenToWorldPoint, Input, Input.mousePosition (2) | 2024.03.29 |
댓글