유니티에서 타이머 관리자(Timer Manager)를 구현하고자 할 때, 

주로 게임 내 다양한 타이밍 관련 기능을 관리하게 된다.

 

예를 들어, 일일 보상, 4시간마다 주어지는 보상, 보스전 타임어택 등이 이에 해당한다.

 


시간 설정 및 확인 메서드: 

타이머를 설정하고, 현재 시간과 비교하여 특정 이벤트의 실행 여부를 결정하는 메서드

DateTime.Now: 현재 시스템의 로컬 시간을 반환


DateTime.UtcNow: 현재 시스템의 협정 세계시(UTC)를 반환


TimeSpan: 두 시간 사이의 간격을 나타냄.

(Ex. 보상 간의 시간 간격을 계산)

 


타이머 관리 메서드: 

특정 시간 간격마다 이벤트를 발생시키기 위한 메서드

InvokeRepeating: 지정된 메서드를 반복적으로 호출

(Ex. 4시간마다 반복되는 보상을 관리)


Coroutine: Unity의 코루틴을 사용하여 시간 지연 이벤트를 구현 가능

(Ex. 보스전 시작 전 카운트다운)

 

Stopwatch: 코드 실행에 걸린 시간을 측정하는 데 유용

(System.Diagnostics.Stopwatch 클래스)

 

System.Timers.Timer: 일정 시간 간격으로 이벤트를 발생시키는 데 사용

(백그라운드 스레드에서 작동하며, 지정된 시간 간격마다 이벤트를 발생시켜 주기적인 작업을 수행)

 

System.Threading.Timer: 스레드 풀에서 작업을 예약하는 데 사용

(지정된 시간이 경과한 후 한 번 또는 반복적으로 작업을 수행하도록 설정)

 


이벤트 실행 메서드: 

설정된 타이머에 따라 실행될 특정 이벤트를 관리하는 메서드

Action, Event: 특정 시간에 이벤트를 발생시키기 위해 사용될 수 있는 델리게이트 및 이벤트

 

Animation: 애니메이션의 시작, 끝 또는 특정 지점에서 콜백을 실행하는 방식으로 시간 기반 이벤트 관리 가능

(AnimationEvent를 사용해 특정 시간에 함수를 호출 가능)

 

+++


<로컬 시간과 UTC의 사용처>


로컬 시간 사용처: 

 

기기에 설정된 시간대를 기준으로 시간을 관리할 때 사용한다.

사용자의 지역적 위치에 따라 다른 시간 정보를 제공해야 할 때 유용하다.

 

(Ex. 일일 보상 시스템에서 자신의 로컬 시간 기준으로 매일 특정 시간에 보상을 받을 수 있도록 설정하는 경우)



UTC 사용처: 

모든 사용자에게 공통적인 기준 시간을 제공할 때 사용한다.

서버 시간이나, 게임 내에서 모든 사용자가 동일한 시간 기준으로 이벤트에 참여해야 하는 경우에 적합하다.

(Ex. 전세계의 플레이어가 참여하는 보스전 타임어택 이벤트에서는 UTC를 사용하여 공평한 기준을 제공)

 







반응형

+ Recent posts