[UE5] 언리얼5 C++ - Timer_Lambda

AnJH·2024년 6월 10일
0

Timer_Lambda

C++을 사용해서 코드를 작성하다보면 Timer를 사용할 일이 많이 발생한다.

이때 단순히 몇 초 뒤에 변수의 값을 바꿔주는 간단한 작업을 할 경우에는 Lambda식을 사용하면 코드가 간결해진다.

  • Lambda식을 사용하지 않은 경우
FTimerHandle ExTimerHandle
float FuncDelay = 1.0f;
bPlayerDie = false;

GetWorldTimerManager().SetTimer(ExTimerHandle, this, &APlayerCharacter::FuncName, FuncDelay, false);

void APlayerCharacter::FuncName()
{
	bPlayerDie = true;
}

위 코드는 bPlayerDie라는 bool타입 변수를 반전시키는 역할만 할 뿐인데, 이를 위해 함수 하나를 만들어두었다.

  • Lambda식을 사용한 경우
FTimerHandle ExTimerHandle;
float FuncDelay = 1.0f;
bPlayerDie = false;

FTimerDelegate PlayerDie = FTimerDelegate::CreateLambda([this]() {bPlayerDie = true; });
GetWorldTimerManager().SetTimer(ExTimerHandle, PlayerDie, FuncDelay, false);

위 코드는 맨 처음 작성한 코드와 동일한 기능을 하는 코드이다. 이처럼 Lambda식을 사용하면 함수를 따로 만들지않아도 코드 한 줄로 같은 표현이 가능하다.

0개의 댓글