[언리얼 엔진] Time
Time
- UWorld는 여러 시간을 관리한다.
TimeSeconds
- 게임이 시작되고 난 뒤 지난 시간.
- 게임의 정지, IS의 증가, 제한 등이 적용된다.
UWorld::GetTimeSeconds
—
TimerManager
- 게임 내 글로벌 타이머를 관리한다.
주요 메서드
SetTimer
parameters
- FTimerHandle& InOutHandle
- UserClass* InObj
- 타이머 함수를 호출할 객체
- typename FTimerDelegate::TMethodPtr< UserClass > InTimerMethod
- template
- 타이머가 발동할 때 호출할 메서드
- template
- float InRate
- 타이머가 설정되고 발동하기 까지의 시간. 초 단위이다.
- 0.0f 보다 작을 경우 기존의 타이머를 제거한다
- bool InbLoop
- true 면 rate 간격 동안 계속 발동.
- false 면 한번만 발동.
- float InFirstDelay
- 타이머의 첫 실행까지의 시간. 초 단위
- 0.0f 보다 작을 경우 InRate 적용.
- default 값은 -1.f
methods
template< class UserClass >
void SetTimer(FTimerHandle& InOutHandle, UserClass* InObj, typename FTimerDelegate::TMethodPtr< UserClass > InTimerMethod, float InRate, bool InbLoop = false, float InFirstDelay = -1.f) {...}
template< class UserClass >
void SetTimer(FTimerHandle& InOutHandle, UserClass* InObj, typename FTimerDelegate::TConstMethodPtr< UserClass > InTimerMethod, float InRate, bool InbLoop = false, float InFirstDelay = -1.f) {...}
/** 일반적인 델리게이트를 받는 버전. */
void SetTimer(FTimerHandle& InOutHandle, FTimerDelegate const& InDelegate, float InRate, bool InbLoop, float InFirstDelay = -1.f) {...}
/** dynamic delegate 받는 버전 UFunctions 같은 애들 */
void SetTimer(FTimerHandle& InOutHandle, FTimerDynamicDelegate const& InDynDelegate, float InRate, bool InbLoop, float InFirstDelay = -1.f) {...}
/** delegate 을 받지 않는 버전 */
void SetTimer(FTimerHandle& InOutHandle, float InRate, bool InbLoop, float InFirstDelay = -1.f) {...}
/** TFunction을 받는 버전 */
void SetTimer(FTimerHandle& InOutHandle, TFunction<void(void)>&& Callback, float InRate, bool InbLoop, float InFirstDelay = -1.f ) {...}
- 예시
GetWorld()->GetTimerManager().SetTimer(DeadTimerHandle, FTimerDelegate::CreateLambda([this]()->void { // do something
}), DeadTimer, false);
Leave a comment