💬 Unity 공식 문서의 내용을 바탕으로 개념을 공부하며 정리한 글입니다.
📁 Unity 6.1 / Scripting / Time
🧪 테스트 환경: Unity 6.1 (6000.1.6f1) / URP 17.1.0
📌 Time 클래스
Unity에서 "시간"과 관련된 작업을 하기 위해 Time 클래스의 프로퍼티를 이용한다.
특히 `Time.time`과 `Time.deltaTime`는 주로 게임이나 앱이 실행되는 동안 시간의 흐름을 측정할 때 흔히 사용되는 중요 프로퍼티이다.
📌 Time.time
응용 프로그램 (또는 프로젝트) 시작 후 경과한 시간을 초 단위로 반환한다. (읽기 전용)
Unity Editor가 일시정지된 경우에는 이 값이 업데이트되지 않는다.
(Editor의 일시정지 상태에 영향을 받지 않는 시간 값은 `Time.realtimeSinceStartup`로 얻어올 수 있다.)
📌 Time.time 사용법
`Time.time`이 사용되는 대표적인 상황 예시이다.
- 경과 시간을 매 프레임마다 확인하기
- 특정 시점 이후 로직을 실행해야 할 때
- 특정 이벤트를 주기적으로 반복 처리할 때
🔖 경과 시간을 매 프레임마다 확인하기
Update문에서 `Debug.Log()`로 `Time.time`값을 출력한다면 게임 시작 후 경과 시간을 확인할 수 있다.
void Update()
{
Debug.Log($"{Time.time:F2}초 경과");
}
- `Update()`는 매 프레임마다 호출되는 함수이다
- `Time.time:F2`로 소수점 이하 2자리까지 표시하도록 지정한다.

📍 테스트
실행하면 콘솔창에 프레임마다 경과 시간(Time.time)을 출력하게 된다.

💬 위 방법 그대로 콘솔창이 아닌 게임 화면 내 Text UI에 `Time.time`을 띄운다면, 사용자가 게임 중 실시간으로 누적된 게임 시간을 볼 수 있도록 구현이 가능하다.
🔖 특정 시점 이후 로직을 실행하기
프로그램 실행 후 5초가 지나면 이벤트를 발생하는 코드 예시이다.
float startDelay = 5f; // 시작 지연 시간(초)
void Start()
{
Debug.Log("게임 시작을 기다리는 중...");
}
void Update()
{
if (Time.time > startDelay)
{
StartGame();
}
}
private void StartGame()
{
Debug.Log("게임 시작!");
}
📍 테스트
실행 후 5초가 지나면 `"게임 시작!"`로그가 출력된다.

🔖 특정 이벤트를 주기적으로 반복 처리하기
예를 들어, 사용자의 키 입력을 받아 총알을 발사하는 오브젝트가 있다고 가정하자.
키 입력 한 번에 총알을 한 발씩 발사하는 방법도 있지만, 키를 꾹 눌렀을 때 총알이 연속으로 발사되는 시스템을 `Time.time`을 이용하여 아래처럼 구현할 수 있다.
public class Shoot : MonoBehaviour
{
public GameObject projectile;
public float fireRate = 0.5f;
private float nextFire = 0.0f;
void Update()
{
if (Input.GetButton("Fire1") && Time.time > nextFire)
{
nextFire = Time.time + fireRate;
Instantiate(projectile, transform.position, projectile.transform.rotation);
}
}
}
- 먼저, 총알 발사를 몇 초 간격으로 할 것인지 `fireRate`변수에 값을 할당한다.
- 매 프레임마다 다음 조건을 검사한다.
- `Input.GetButton("Fire1")`: Fire1 버튼이 눌렸는지
- `Time.time > nextFire`: 현재 `Time.time` 값이 다음 총알 발사가 가능한 시간인 `nextFire`값을 초과하였는지
- 위 조건을 모두 통과하여 총알 발사에 성공했으면, 발사 시점의 `Time.time`에 `fireRate`를 더하여 다음 총알 발사가 가능한 시간인 `nextFire`을 새로 계산한다.
- 예를 들어 `fireRate = 0.5f`이고 `Time.time` 값이 3.0일 때 `nextFire` 값은 3.5이다.
📍 테스트
발사키를 꾹 누르고 있으면 일정한 시간 간격마다 총알이 발사된다.

'👻 Unity > 📘 Unity 노트' 카테고리의 다른 글
| [Unity Docs 요약] 카메라 컴포넌트(Camera) 정리 (0) | 2025.07.08 |
|---|---|
| [Unity Docs 요약] URP의 카메라 렌더 유형(Camera Render Types) 정리 (0) | 2025.07.01 |
| [Unity Docs 요약] 스프라이트 텍스처 임포트 설정(Sprite Texture Import Settings) 정리 (2) | 2025.06.25 |