#include "TimerManager.h"를 추가해주면 된다.
생성자가 FTimerManager() = delete;로 되어있기 때문에 인스턴스화 시킬 수 없다.
각 인자 값으론
- FTimerHandle 쓰여질 핸들
- InRate 반복될 횟수
- inbLoop 무한반복 여부
- InFirstDelay 첫 발동까지 대기시간
- const FTimerDelegate&, const FTimerDynamicDelegate&, TFunction<void>&& 함수 포인터
- UserClass* 타이머를 적용할 대상 오브젝트
FTimerHandle handle;
float rate = 1.f;
float inFirstDelay = 0.f;
bool bLoop = false;
FTimerDelegate timerDele;
FTimerDynamicDelegate dynamicTimerDele;
void Fn();
void ConstFn() const;
UFUNCTION() void UFn();
이때 델리게이트에는 함수 바인딩을 해줘야한다.
timerDele.BindUFunction(this, "UFn");
dynamicTimerDele.BindUFunction(this, "UFn");
각 함수 원형은 아래와 같다. this-> 생략 가능
this->GetWorldTimerManager().SetTimer(handle, rate, bLoop);
this->GetWorldTimerManager().SetTimer(handle, timerDele, rate, bLoop);
this->GetWorldTimerManager().SetTimer(handle, dynamicTimerDele, rate, bLoop);
this->GetWorldTimerManager().SetTimer(handle, []() { GEngine->AddOnScreenDebugMessage(0, 1.f, FColor::Red, "테스트"); }, rate, bLoop);
this->GetWorldTimerManager().SetTimer(handle, this, &ACoreFarmableItem::Fn, bLoop);
this->GetWorldTimerManager().SetTimer(handle, this, &ACoreFarmableItem::ConstFn, bLoop);
UI는 UObject으로부터 상속을 받지 않기 때문에 GetWorldTimerManager 함수가 존재하지가 않는다 따라서 아래와 같이 수정해줘야 한다.
GetWorld()->GetTimerManager().SetTimer
'게임엔진 > Unreal' 카테고리의 다른 글
[Unreal] csv 파일 불러온 후 읽어들이기 (0) | 2022.08.05 |
---|---|
[Unreal] 자료구조 순회 방법 (0) | 2022.08.04 |
[Unreal] 화면 정중앙 조준선 위치 기반 레이캐스트 (0) | 2022.08.01 |
[Unreal] 문자열 변환 - FName, FText, FString (0) | 2022.07.31 |
[Unreal] FVector과 FRotator간 변환 (0) | 2022.07.31 |