게임 개발 분야에서 시간은 게임 플레이 경험의 모든 측면에 영향을 미치는 기본 개념입니다. Unity의 'Time' 클래스는 시간을 제어하고 조작하기 위한 다목적 도구로 사용됩니다. 이 블로그 게시물은 Time 클래스를 이해하고 내장 메서드를 효과적으로 사용하는 방법을 안내하는 것을 목표로 합니다.
시간 클래스 이해하기
Unity의 Time 클래스는 UnityEngine 네임스페이스의 일부이며, 시간 정보를 처리하는 데 사용되는 속성과 함수를 제공합니다. 게임 시간, 실시간, 프레임 속도 데이터 등을 관리하는 방법을 제공합니다.
내장 메서드 및 속성 사용
몇 가지 필수 속성과 Unity 프로젝트에서 이를 활용하는 방법을 살펴보겠습니다.
1. Time.time
'Time.time'은 게임 시작 이후 시간을 초 단위로 반환합니다. 특정 시간이 지난 후에 발생하려는 작업에 유용합니다.
void Update()
{
if (Time.time > 5)
{
Debug.Log("게임 시작 이후 다섯 초가 지났습니다.");
}
}
2. Time.deltaTime
'Time.deltaTime'은 마지막 프레임을 완료하는 데 걸린 시간(초)입니다. 게임 오브젝트 움직임을 부드럽게 하고 프레임 속도를 독립적으로 만드는 데 사용할 수 있습니다.
public float speed = 10.0f;
void Update()
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
3. Time.fixedDeltaTime
'Time.fixedDeltaTime'은 물리학 및 기타 고정 프레임 속도 업데이트(예: 'MonoBehaviour's FixedUpdate')가 수행되는 초 단위의 간격입니다. 이 값은 프레임 속도에 관계없이 일관된 물리 시뮬레이션을 보장하도록 설정할 수 있습니다.
void FixedUpdate()
{
rigidbody.AddForce(Vector3.up * speed * Time.fixedDeltaTime);
}
4. Time.timeScale
Time.timeScale을 사용하여 게임 시간을 빠르게 또는 느리게 할 수 있습니다. 'timeScale'이 1이면 실시간, 'timeScale'이 0.5이면 절반 속도, 2이면 두 배 속도를 의미합니다. 'timeScale'을 0으로 설정하면 모든 시간 종속 작업을 중지하여 게임을 효과적으로 일시 중지합니다.
public void PauseGame()
{
Time.timeScale = 0;
}
public void ResumeGame()
{
Time.timeScale = 1;
}
5. Time.realtimeSinceStartup
Time.realtimeSinceStartup은 게임 시작 이후의 시간을 초 단위로 반환하는 읽기 전용 속성이지만 Time.time과 달리 Time.timeScale의 영향을 받지 않습니다. 일시 중지 중에도 계속되어야 하는 실시간 작업이나 동작에 유용합니다.
void Update()
{
if (Time.realtimeSinceStartup > 10)
{
Debug.Log("게임 시작 이후 10초가 실제 시간으로 지났습니다.");
}
}
마무리
'Time' 클래스는 개발자가 게임 내에서 시간을 제어하고 조작할 수 있도록 해주는 Unity의 필수 도구입니다. Time.time, Time.deltaTime, Time.fixedDeltaTime, Time.timeScale 및 Time.realtimeSinceStartup과 같은 속성을 효과적으로 사용하면 게임에 정교함과 유연성을 더할 수 있습니다.
'Unity' 카테고리의 다른 글
Unity Animator State : 애니메이션 상태 검사 (0) | 2023.07.18 |
---|---|
Unity에서 GUID란?? (0) | 2023.07.15 |
Unity에서 GPS 구현하기 (0) | 2023.07.11 |
Unity Package-lock.json 파일이란 무엇인가? (0) | 2023.06.30 |
Unity Animator의 Any State 기능이란? (0) | 2023.06.29 |