언리얼엔진/거리, 벡터, 수학

[타이머] FTimerManager와 FTimerHandle

예상밖의C 2024. 1. 27. 17:01
  • FTimerManager : UWorld 클래스의 멤버로 GetWorldTimerManager()함수를 통해 얻을 수 있음. 
  • 여러 개의 타이머를 생성하고 관리 가능, 타이머 생성, 설정, 타이머 이벤트 처리에 사용 

 

  • FTimerHandle : 타이머 이벤트를 추적하고 제어하기 위한 구조체로 특정 타이머 이벤트를 식별하는 핸들

 

  • 타이머 이벤트: 특정 타이머 핸들이 지정한 간격으로 호출되는 함수 또는 이벤트

 

ex) 캐릭터에게 이런 멤버 변수가 있다

float FirePerMinute = 600; // 분당 탄환 개수

FTimerHandle BetweenShotsTimer;

float TimerBetweenFire; // 탄환(공격)과 탄환 사이의 시간

생성자에서 TimerBetweenFire 지정 

TimerBetweenFire = 60.f / FirePerMinute;

 -> FirePerMinute을 600으로 설정했기 때문에 60 / 600 = 0.1. 0.1초에 한 개의 총알을 발사하게 된다.

GetWorldTimerManager().SetTimer(BetweenShotsTimer, this, &ThisClass::Fire, TimerBetweenFire, true);

계산을 행할 함수에서 타임매니저를 얻어와서 타이머 설정(타이머 핸들, 현재 클래스, 실행시킬 함수, 간격, 타이머 반복 설정)

GetWorldTimerManager().ClearTimer(BetweenShotsTimer);

타이머가 필요없게 되면 삭제 해줌