Unity PAT 프로젝트 #7 Game Timer

SourStar15·2026년 1월 3일

PAT-Project

목록 보기
7/10
post-thumbnail

개요

지금 까지 만든것만 놓고 보면 단순히 게임이라기 보단 AI가 플레이어를 추격하는 것밖에 없어 재미를 위한 게임 시스템을 만들기위해 게임타이머를 추가할 예정입니다.

Game Timer System

간단히 게임이 시작되면 게임 타이머(180초) 카운트가시작 되고 카운트가 다 되기전에 미션을 수행하는구조로 코드를 구현하려 합니다. 미션같은 경우엔 아직 추가하지 않고 우선 타이머를 구현해 시간제한이 끝나면 다시할지 메인메뉴로 돌아갈지 구현하겠습니다.

GameTimer Script

먼저 변수먼저 선언해 주었습니다.

타이머는 TextMeshPro를 사용하였고 카운트가 다 되어 게임실패시 게임오버 화면, 다시하기, 메인메뉴로 돌아가기 위한 버튼 변수도 선언해주었습니다.

void Start( )


게임이 시작될 경우 실행되는 코드입니다. 다시하기와, 메인메뉴로 돌아가기 버튼을 연동해 두었습니다.

void Update( )

업데이트 코드는 되게 단순하게 작성하였습니다.

Time.deltaTime을 이용해 gameTime(180초)를 계속 뺌으로써 타이머를 계산하게 되며 계산된 remainingTime을 UpdateTimerDisplay( )메서드를 통해 화면에 출력하게 되는 구조입니다.
만약 현재 시간이 0으로 된다면 TimeOut 메서드를 실행하게 됩니다.

void UpdateTimerDisplay( )


해당 함수를 통해 실제 게임을 실행했을 경우 화면에 나오는 타이머를 보이게 해줍니다. 먼저 분과 초를 구해준뒤 timerText 변수에 넣어주면 되는 구조입니다.

플레이어에게 긴장감을 주기 위해 시간이 30초 이하일 경우 텍스트 색상을 빨간색으로 바꿔주었습니다.

FloorToInt ?

FloorToInt는 내림을 통해 실수 float을 Int형 정수로 바꿔주는 합수입니다. 즉, remainingTime 변수를 /60, %60 한 값을 정수로 바꿔 각각의 변수에 저장하는 것 입니다.

{0:00}:{1:00} 형식 문자열

timerText.text = string.Format("{0:00}:{1:00}", minutes, seconds);

해당 코드를 보면 이런식 인데요 간단히 설명 드리자면

  • { } 중괄호 안의 숫자는 몇 번째 값을 쓸지
  • : 콜론 뒤는 어떤 형식으로 출력할지 정해주는 것 입니다.

즉, {0:00}:{1:00} 이 표현식은 0번째 값을 두자리로 표현하고 1번째 값을 두자리로 표현하는 방식입니다.

void TimeOut( )

Time.timeScale = 0f; 

를 통해 타이머가 다 됐을 경우 게임을 정지하며 게임오버 패널을 활성화 시킵니다.
위에 구조를 설명했듯이 게임오버 패널을 통해 다시하기 혹은 메인메뉴로 가는 버튼을 보이게 구현할 것입니다.

Cursor.lockstate = CursorLockMode.None;
Curosr.visible = true;

위 같은 코드는 해당 게임에서 플레이 할 경우 마우스가 안보이는 방식입니다.
따라서 게임오버를 통해 다시하기와 메인메뉴로 돌아가기 위해 커서를 보이기 위함입니다.

void RestartGame( )


게임오버를 통해 다시시작하는 메서드입니다.
다시하기 혹은 메인메뉴 버튼을 누르기 전까지 timescal은 0이기 때문에 다시시작할 경우 다시 시간을 재개해줍니다.

void GoToMainMenu( )


게임오버를 통해 메인메뉴로 돌아가기 위한 메서드입니다.

SceneManager.LoadScen(MainMenu"); 

코드를 통해 메인메뉴 씬으로 이동하게 되는데 여기서 인수값을 실제 유니티 씬 이름으로 설정해 두어야합니다.

Canvas

GameTimer에 지금까지 스크립트 컴포넌트를 연결해 주었습니다.
게임오버패널 안에 게임오버 텍스트, 다시하기 버튼, 메인메뉴 버튼을 만들어 두었습니다.

GameTimer Object


지금까지 구현한 기능을 해당 버튼, 텍스트에 맞게 적용해 주었습니다.

profile
말하는 감자

0개의 댓글