Unity 시간 관리와 스크립트에 대한 가이드
Unity에서는 게임이나 애플리케이션의 시간 관리를 위해 Time 클래스를 제공하며, 이 클래스의 여러 속성을 통해 시간과 관련된 다양한 작업을 수행할 수 있습니다. 이 문서에서는 Time 클래스의 주요 프로퍼티와 활용 방법에 대해 설명하고, 코드 예제를 통해 이를 쉽게 이해할 수 있도록 합니다.
Time 클래스의 주요 프로퍼티
주요 프로퍼티
프로퍼티 | 설명 |
---|---|
Time.time | 프로젝트가 재생 시작 이후 경과한 시간 (초 단위) |
Time.deltaTime | 마지막 프레임이 완료된 후 경과한 시간 (초 단위) |
Time.timeScale | 시간의 흐름 속도를 제어하며, 슬로우모션 효과를 생성할 수 있음 |
Time.fixedDeltaTime | Unity의 고정 타임스텝 루프 간격(물리 연산에 사용됨) |
Time.maximumDeltaTime | 엔진이 감지한 deltaTime의 상한을 설정 |
변수 및 고정 타임 스텝
Unity는 두 가지 시간 추적 시스템을 사용합니다: 변수 타임 스텝과 고정 타임 스텝.
- 변수 타임 스텝: 각 업데이트마다 프레임 속도에 따라 변화하는 시간간격을 추적합니다.
- 고정 타임 스텝: 일정한 시간 간격을 유지하며, 주로 물리 연산에 사용됩니다.
Update 메서드와 FixedUpdate 메서드
- Update: 일반적으로 게임 로직을 처리하기 위해 매 프레임마다 호출됩니다.
- FixedUpdate: 물리 업데이트와 같은 고정된 시간 간격에서 사용됩니다.
시간 기반의 동작 처리
게임 오브젝트를 시간 기반으로 이동시키려면, 프레임 속도에 따라 scaling해야 합니다. Time.deltaTime을 사용하여 각 프레임마다 같은 거리만큼 이동하도록 설정할 수 있습니다.
코드 예제: 오브젝트 이동
using UnityEngine;
public class ExampleScript : MonoBehaviour {
public float distancePerSecond;
void Update() {
transform.Translate(0, 0, distancePerSecond * Time.deltaTime);
}
}
물리 시뮬레이션과 시간
먼저, 물리 시스템은 고정된 타임 스텝에 따라 작동합니다. 이를 통해 물리 연산의 정확성과 일관성을 높일 수 있습니다.
FixedUpdate 메서드
FixedUpdate 메서드는 물리 연산을 주로 처리하며, 이 메서드 내에서 Rigidbody에 힘을 가하는 등의 작업을 수행할 수 있습니다.
시간 관리 프로퍼티
Time.fixedDeltaTime
: 고정 타임 스텝 간격을 초 단위로 설정합니다. 예를 들어 값이 0.02이면 초당 50회 업데이트가 발생합니다.
슬로우모션과 일시정지
게임에서 슬로우모션 효과를 주고 싶거나 게임을 일시정지할 때는 Time.timeScale을 사용합니다.
코드 예제: 일시정지 및 재개
using UnityEngine;
public class ExampleScript : MonoBehaviour {
void Pause() {
Time.timeScale = 0;
}
void Resume() {
Time.timeScale = 1;
}
}
캡처 프레임 속도
게임 플레이를 비디오로 녹화할 때는 캡처 프레임 속도를 설정할 수 있습니다. 이를 통해 비디오의 품질을 개선하고, 업데이트를 규칙적으로 발생시킬 수 있습니다.
코드 예제: 스크린샷 캡처
using UnityEngine;
public class ExampleScript : MonoBehaviour {
string folder = "ScreenshotFolder";
int frameRate = 25;
void Start () {
Time.captureFramerate = frameRate;
System.IO.Directory.CreateDirectory(folder);
}
void Update () {
string name = string.Format("{0}/{1:D04} shot.png", folder, Time.frameCount);
Application.CaptureScreenshot(name);
}
}
결론
Unity에서 시간 관리와 스크립트를 활용하는 방법에 대해 설명드렸습니다. Time 클래스의 다양한 프로퍼티를 통해 게임의 시간 흐름을 정확하게 조절할 수 있으며, 이를 통해 보다 원활한 사용자 경험을 제공할 수 있습니다. 이 가이드를 참고하여 게임 개발에 적용해 보세요.