유니티에서 타이머 관리자(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를 사용하여 공평한 기준을 제공)
'산대특 > 게임 클라이언트 프로그래밍' 카테고리의 다른 글
[AppleCatch] AppleCatch 만들기 (0) | 2024.02.05 |
---|---|
[ShootingGame] 이동, 발사, 충돌, 애니메이션(연출) 만들기 (0) | 2024.02.05 |
[PirateBomb] 캐릭터의 이동과 공격, 적의 피격과 사망 (0) | 2024.02.05 |
[SpaceShooter2D] 비행기[Player] GetAxis로 이동하기 + 정규화(Normalize) (0) | 2024.02.02 |
[Bamsongi] 화면 클릭해서 밤송이 던지기 + 파티클 (0) | 2024.02.02 |