개발단에 가입하여 베르의 게임 개발 유튜브를 후원해주세요!

 

베르의 게임 개발 유튜브

안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다! 게임 개발에 도움이 되는 강좌들을 올리는 채널입니다! [투네이션 후원] https://toon.at/donate/637735212761460238 [유니티 어필리에이트

www.youtube.com

 

안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다!

이번에는 Time 클래스의 프로퍼티 중에서 time, realtimeSinceStartup, timeSinceLevelLoad에 대해서 알아보겠습니다.

 

사용 엔진 버전 : 2020.3

 

타임라인

0:00 인트로

0:14 Time.time

1:21 Time.realtimeSinceStartup

2:47 Time.timeSinceLevelLoad

3:57 아웃트로

스크립트

인트로

안녕하세요. 여러분들과 함께 게임 개발을 공부하는 베르입니다.

이번에는 Time 클래스의 프로퍼티 중에서 time과 realtimeSinceStartup, 그리고 timeSinceLevelLoad에 대해서 알아보도록 하겠습니다.

Time.time

Time 클래스의 프로퍼티인 time은 게임이 시작된 이후로부터 흐른 시간을 보여주는 프로퍼티입니다.

유니티 에디터에서 새 C# 클래스를 생성하고 스크립트 에디터를 열어줍니다.

비주얼 스튜디오가 열리고 나면 클래스의 상단에 UnityEngine.UI 네임스페이스를 using 선언해줍니다.

그리고 Text 타입으로 측정한 시간을 보여줄 timeText 변수를 선언해줍니다.

그 다음 Update 함수에서는 Time.time 값을 문자열로 만들어서 timeText로 출력하는 코드를 작성합니다.

코드를 모두 작성한 다음에는 코드를 저장하고 에디터로 돌아갑니다.

에디터에서는 Hierarchy 뷰에 우클릭해서 [UI > Text] 항목을 선택해서 텍스트 UI를 생성합니다.

그리고 Canvas 게임오브젝트에 방금 만든 컴포넌트를 붙인 뒤 Time Text 프로퍼티에 방금 만든 텍스트 UI를 할당해줍니다.

그 다음 게임을 플레이해보면 게임이 시작된 이후에 흐른 시간이 계속해서 올라가는 모습을 볼 수 있습니다.

Time.realtimeSinceStartup

그 다음에 설명할 프로퍼티는 realtimeSinceStartup입니다.

이 realtimeSinceStartup 역시 time과 같이 게임이 시작된 이후로부터 흐른 시간을 보여주는 프로퍼티입니다.

그럼 이 realtimeSinceStartup 프로퍼티가 time 프로퍼티와 어떤 차이가 있는지 알아보겠습니다.

다시 스크립트로 돌아가서 Time.time을 출력하는 timeText에 realtimeSinceStartup도 함께 출력하도록 코드를 수정합니다.

그리고 키보드 화살표 키로 timeScale을 조절할 수 있는 코드를 작성합니다.

코드를 모두 수정한 다음에는 에디터로 돌아갑니다.

에디터로 돌아온 다음 게임을 플레이해보면 게임이 시작된 이후로 흐른 시간이 Time.time과 Time.realtimeSinceStartup 프로퍼티를 통해서 출력됩니다.

이 때 키보드의 화살표 키를 눌러서 time scale을 조절해보면 Time.time은 time scale 값에 따라 영향을 받지만 realtimeSinceStartup은 전혀 영향을 받지 않는 모습을 볼 수 있습니다.

거기에 추가로 게임을 잠시 일시정지시켰다가 플레이시켜보면 realtimeSinceStartup은 일시정지한 시간이 포함되어 값이 바뀐 것을 확인할 수 있습니다.

이렇게 게임이 시작된 시간 값을 출력하는 기능은 쓸데가 별로 없어보이지만, 게임을 실행한 시간을 기록해서 플레이어에게 업적을 준다던지, 너무 많은 시간동안 게임을 플레이하고 있는 유저가 있다면 경고문을 출력해주는 기능에 사용할 수 있습니다.

Time.timeSinceLevelLoad

그리고 마지막으로 알아볼 프로퍼티는 timeSinceLevelLoad입니다.

이 프로퍼티는 마지막으로 씬이 로드된 이후로 흐른 시간을 의미합니다.

스크립트로 돌아가서 timeText에 timeSinceLevelLoad를 출력하는 코드를 추가합니다.

그리고 스크립트 상단에 UnityEngine.SceneManagement 네임스페이스를 using 선언하고 Update 함수에서 스페이스 키를 누르면 현재 씬을 다시 로드하도록 코드를 작성합니다.

코드를 모두 작성한 다음에는 코드를 저장하고 에디터로 돌아갑니다.

에디터에서는 빌드 세팅 창을 열어서 현재 씬을 Scenes In Build 목록에 추가해줍니다.

그 다음에 게임을 플레이해보면 time과 realtimeSinceStartup, 그리고 timeSinceLevelLoad 값이 동시에 상승하는 것을 확인할 수 있습니다.

이 때 스페이스 키를 누르면 현재 씬이 다시 로드되는데 time과 realtimeSinceStartup은 누적된 상태로 계속 증가하지만 timeSinceLevelLoad 값은 초기화되어서 0부터 다시 누적되는 모습을 볼 수 있습니다.

이 프로퍼티를 이용하면 던전 씬에 진입하고 난 이후에 플레이어가 던전을 클리어하는데 걸린 시간을 측정할 수 있습니다.

아웃트로

이번 영상에서는 Time 클래스의 프로퍼티 중에서 time과 realtimeSinceStartup, 그리고 timeSinceLevelLoad에 대해서 알아보았습니다.

이 강좌는 구독자 여러분들의 시청과 후원으로 제작되었습니다.

이상 베르의 게임 개발 유튜브였습니다. 감사합니다.

 

[유니티 어필리에이트 프로그램]

아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.

 

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.

assetstore.unity.com

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Create 2D & 3D Experiences With Unity's Game Engine | Unity Pro - Unity Store

Unity Pro software is a real-time 3D platform for teams who want to design cross-platform, 2D, 3D, VR, AR & mobile experiences with a full suite of advanced tools.

store.unity.com

[투네이션]

 

-

 

toon.at

[Patreon]

 

WER's GAME DEVELOP CHANNEL님이 Game making class videos 창작 중 | Patreon

WER's GAME DEVELOP CHANNEL의 후원자가 되어보세요. 아티스트와 크리에이터를 위한 세계 최대의 멤버십 플랫폼에서 멤버십 전용 콘텐츠와 체험을 즐길 수 있습니다.

www.patreon.com

[디스코드 채널]

 

Join the 베르의 게임 개발 채널 Discord Server!

Check out the 베르의 게임 개발 채널 community on Discord - hang out with 399 other members and enjoy free voice and text chat.

discord.com

 

반응형

'Unity3D > Programming' 카테고리의 다른 글

[Unity] JSON  (0) 2022.04.05
[Unity] Time 클래스 통합본  (0) 2021.12.27
[Unity] timeScale과 unscaledDeltaTime  (0) 2021.11.29
[Unity] Time.deltaTime  (0) 2021.11.22
[Unity] 인보크(Invoke)  (0) 2021.07.12

+ Recent posts