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미사용)
실습 과제
CooldownTimer로 3초 쿨다운을 구현해본다.Pause()/Resume()으로 게임을 일시정지/재개해본다.
이전 문서 / 다음 문서
이전: 16_StatSystem.md 다음: 18_Diagnostics.md
관련 API
MCP_Index.md Time 섹션