/**
* 설정된 간격으로 지정된 기본 함수를 호출하도록 타이머를 설정합니다.
* 이 핸들에 타이머가 이미 설정되어 있으면 현재 타이머를 대체합니다.
*
* @param InOutHandle 전달된 핸들이 기존 타이머를 참조하는 경우 새 타이머를 추가하기 전에 삭제됨. 두 경우 모두 새 타이머의 새 핸들이 반환됨.
* @param InObj 타이머 기능을 호출할 개체.
* @param InTimerMethod 타이머가 작동할 때 호출하는 메서드.
* @param InRate 설정과 실행 사이의 시간(초). <= 0.f인 경우 기존 타이머를 지움.
* @param InbLoop 반복적으로 계속 실행하려면 true, 한 번만 실행하려면 false.
* @param InFirstDelay 루프 타이머의 첫 번째 반복 시간(초). < 0.f InRate>를 사용할 경우.
*/
template< class UserClass >
FORCEINLINE void SetTimer(FTimerHandle& InOutHandle, UserClass* InObj, typename FTimerDelegate::TMethodPtr< UserClass > InTimerMethod, float InRate, bool InbLoop = false, float InFirstDelay = -1.f)
{
InternalSetTimer(InOutHandle, FTimerUnifiedDelegate( FTimerDelegate::CreateUObject(InObj, InTimerMethod) ), InRate, InbLoop, InFirstDelay);
}
// Global TimerManager from GameInstance
FTimerManager& TimerManager = GetModeWorld()->GetGameInstance()->GetTimerManager();
// Set Timer
FTimerHandle TimerHandle;
TimerManager.SetTimer(TimerHandle, this, &ThisClass::TimerFunc, 1.0f, true);
// Clear Timer
if (TimerHandle.IsValid())
{
FTimerManager& TimerManager = GetModeWorld()->GetGameInstance()->GetTimerManager();
TimerManager.ClearTimer(TimerHandle);
}
// Check Timer Active - 타이머가 현재 활성화되어 있는지 확인가능
if (GetWorldTimerManager().IsTimerActive(this, TimerHandle)) // return bool
{
// TODO : 활성화되어 있는 상태에 할 행동
}
'::protected > 언리얼4&5' 카테고리의 다른 글
Game Ability System(aka.GAS) (0) | 2023.10.04 |
---|---|
UI Optimization(ongoing) (0) | 2023.08.20 |
Optimization (0) | 2023.07.05 |
CoreRedirects (0) | 2023.07.03 |
Subsystem - UGameInstanceSubsystem.. (0) | 2023.06.30 |