Table of Contents

17. TimeSystem

왜 필요한가

Time.deltaTime을 직접 쓰면 일시정지/타임스케일 조절이 코드 전체에 흩어져 일관되게 적용되지 않는다.

언제 사용하는가

쿨다운, 딜레이 실행, 일시정지 가능한 타이머가 필요할 때는 항상 ITimeSystem을 사용한다 (Time.deltaTime 직접 사용 금지, Rules #4).

프로젝트에서 어떤 역할인가

Pause/Resume/TimeScale로 전역 시간 흐름을 제어하고, CooldownTimer/Delay/Repeat로 개별 타이머를 관리한다.

실제 게임에서는 언제 호출되는가

스킬 쿨다운 계산, 일시정지 메뉴 진입 시 Pause().

코드 예제

[Inject] private ITimeSystem _time;
float dt = _time.DeltaTime;
var timer = new CooldownTimer(3f);
_time.Pause();

관련 Sample

Samples/Time/TimeSystemSample.cs

Best Practice

Gameplay 주기 로직은 MonoBehaviour.Update에 직접 구현하지 않고 TickSystem/TimeSystem을 경유한다.

자주 하는 실수

  • Time.deltaTime 직접 참조
  • 일시정지 중에도 계속 흐르는 타이머를 만듦 (ITimeSystem.DeltaTime 미사용)

실습 과제

  1. CooldownTimer로 3초 쿨다운을 구현해본다.
  2. Pause()/Resume()으로 게임을 일시정지/재개해본다.

이전 문서 / 다음 문서

이전: 16_StatSystem.md 다음: 18_Diagnostics.md

관련 API

MCP_Index.md Time 섹션