方法一
.h文件
FTimerHandle Timer;
void TestFun();
.cpp文件
GetWorld()->GetTimerManager().SetTimer(Timer, this, &AMyActor::TestFun, 5.f, false);
GetWorld()->GetTimerManager().ClearTimer(Timer); //清除
//GetWorld()->GetTimerManager().ClearAllTimersForObject(this); 清除全部
void AMyActor::TestFun()
{
UE_LOG(LogTemp, Warning, TEXT("TestFun !"));
}
方法二
.h文件
FTimerDelegate TimerDel;
FTimerHandle TimerHandle;
UFUNCTION()
void TestFun1();
.cpp
TimerDel.BindUFunction(this, FName("TestFun1"));
GetWorld()->GetTimerManager().SetTimer(TimerHandle, TimerDel, 0.5f, false);
void AMyActor::TestFun1()
{
UE_LOG(LogTemp, Warning, TEXT("TestFun1 !"));
}
带参数
.h
FTimerDelegate TimerDel1;
FTimerHandle TimerHandle1;
UFUNCTION()
void TestFun2(int32 x, float y);
.cpp
int32 myInt = 10;
float myFloat = 20.f;
TimerDel1.BindUFunction(this, FName("TestFun2"), myInt, myFloat);
GetWorld()->GetTimerManager().SetTimer(TimerHandle1, TimerDel1, 5.f, true);//设置为true会一直执行