Unity 개발일지

[Unity] 게임이 끝났을 때 멈추기, 재시작 하기 본문

Unity 개발

[Unity] 게임이 끝났을 때 멈추기, 재시작 하기

아머르 2024. 4. 14. 23:53

1. 시간의 흐름을 조정

Time.timeScale 프로퍼티 사용

Time.timeScale 는 시간이 경과하는 크기를 나타내며 값을 수정하여 시간이 흐르는 속도(배율)을 조절할 수 있다.

 

2. 코드 작성

시간이 30초가 지나거나 cardCount 가 0 이되면 timeScale이 0 이 되고 endTxt를 출력한다.

재시작을 고려하여 Update 함수에 timeScale을 1로 설정하였다.

Retry 버튼을 만들기 위하여 Script를 작성하였다.

 

3. Unity 엔진 내 적용

EndTxt 텍스트에 Button 컴포넌트와 RetryButton 스크립으를 적용하고 On Click 시 RetryButton의 Retry 함수를 실행하도록 적용하였다.

 

4. 추가사항

 

* Time.timeScale = 0; 일때 Update()는 실행되고 FixedUpdate()는 실행되지 않는다.

 >> Update는 프레임마다 호출이며, FixedUpdate는 독립적인 타이머가 존재하여 그떄마다 호출된다.

      비슷한 예로 Coroutine에서 WaitForSeconds는 멈추고 WautForSecondsRealtime은 멈추지 않는다.

* 해당 함수를 이용하여 Fade Effect를 만들 수 있다.

* Audio/Sound의 속도는 timeScale로 제어할 수 없다.

  >> AudioSource의 Pitch값을 변경하여 제어할 수 있다.

반응형