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

AnJH·2024년 5월 23일

Timer 기능 알아보기

먼저 C++에서 Timer 기능을 사용하기 위해서는 Timer Handle이 필요하다.

  • PlayerCharacter.h
FTimerHandle CustomTimerHandle;

헤더파일에 위와 같이 TimerHandle을 선언한다.

Timer가 원하는 Action을 모두 마쳤다면 TimerHandle을 초기화하는 방식으로 재사용이 가능하다.

  • PlayerCharacter.CPP
	
 FunctionName();
 GetWorldTimerManager().SetTimer(CustomTimerHandle, this, &APlayerCharacter::FunctionName, 1.0f, true);

위 SetTimer() 함수에는 TimerHandle, PlayerCharacter, FunctionName, PlayRate, bLoop 등의 매개변수를 넣었다.

1.0f 라고 쓰여진 자리는 Timer의 Rate값으로 몇 초에 한 번씩 실행될 것인지를 결정한다. 위 코드는 1초에 한 번씩 Timer를 실행할 것이다.

true 라고 쓰여진 자리는 Timer의 Loop를 설정한다. false로 설정할 경우, Timer는 한 번만 실행된 뒤, 종료될 것이다.

이를 종합하면 먼저 함수를 호출했기에 바로 함수가 실행되고, 이후 Timer를 통해 1초에 한 번씩 함수를 무한히 호출하게 된다.

이를 특정 횟수만큼만 실행시키고 싶다면 변수 하나를 선언하여 실행될 함수에서 Timer를 초기화 시키는 방법이 있다.

  • PlayerCharacter.CPP
if (timerDelay-- <= 0) {
	GetWorldTimerManager().ClearTimer(CustomTimerHandle);
	timerDelay = 2;
	return;
}

실행될 함수 내에서 위와 같은 조건문을 추가한다.

timerDelay의 초기값은 2이고, 함수가 실행될때마다 1씩 줄어들며 0이 되었을 때 ClearTimer를 호출함으로써 TimerHandle을 초기화 시키고 return한다.

이런 방식을 통해 원하는 초마다 함수를 실행시킬 수 있고, 특정 횟수가 실행되었다면 Timer를 초기화시킬 수 있다.

0개의 댓글