[Unity Concept] Time.time 정리

2025. 7. 29. 21:40·👻 Unity/📘 Unity 노트

 

💬 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} vs {Time.time:F2}

 

 

📍 테스트

 

실행하면 콘솔창에 프레임마다 경과 시간(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초가 지나면 `"게임 시작!"`로그가 출력된다.

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이다. 

 

 

📍 테스트

 

발사키를 꾹 누르고 있으면 일정한 시간 간격마다 총알이 발사된다.

fireRate 값에 변화를 주면서 테스트를 진행하였다.

 

 

 


'👻 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
'👻 Unity/📘 Unity 노트' 카테고리의 다른 글
  • [Unity Docs 요약] 카메라 컴포넌트(Camera) 정리
  • [Unity Docs 요약] URP의 카메라 렌더 유형(Camera Render Types) 정리
  • [Unity Docs 요약] 스프라이트 텍스처 임포트 설정(Sprite Texture Import Settings) 정리
  • [Unity Docs 요약] 텍스처 임포트 설정 (Texture Import Settings) 정리
Mojing_
Mojing_
매일 매일 경험치를 쌓는 모징이의 개발 블로그입니다 :) This is Mojing’s Dev Blog where she gain experience points every day. :)
  • Mojing_
    모징이의 개발 경험치
    Mojing_
  • 전체
    오늘
    어제
    • 분류 전체보기 (152)
      • 👻 Unity (14)
        • 🔧 기능 구현 (1)
        • 💡 유니티 팁 (1)
        • 📘 Unity 노트 (8)
        • 📍 Quest Log (1)
      • 💻 Programming (14)
        • C (3)
        • C++ (9)
        • C# (0)
        • Swift (2)
      • 💾 Computer Science (16)
        • Algorithm (9)
        • Software Engineering (7)
      • 🐸 Problem Solving (108)
        • Programmers (41)
        • BOJ (67)
      • 🔋 ETC (0)
  • 인기 글

  • 공지사항

  • 태그

    programmers
    CS
    Unity
    오블완
    backtracking
    BOJ
    티스토리챌린지
    C++
    탐색
    Problem Solving
    algorithm
    DFS/BFS
    dynamic programming
    프로그래머스
    sort
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Mojing_
[Unity Concept] Time.time 정리
상단으로

티스토리툴바