Tick 함수는 기본적으로 비활성화되어 있다. 이를 활성화하려면 액터 생성자에서 아래와 같이 설정해야 한다:
PrimaryActorTick.bCanEverTick = true;
bCanEverTick: true로 설정 시, 엔진이 매 프레임 Tick 함수를 호출한다.bCanEverTick = false로 설정해서 불필요한 Tick 호출을 방지한다.DeltaTime은 직전 프레임과 현재 프레임 사이의 시간(초)을 의미한다.DeltaTime의 값은 프레임 레이트(FPS)에 따라 달라진다:이를 통해, 프레임 간 시간 차이를 반영한 로직을 작성할 수 있다.
FVector NewLocation = GetActorLocation();
NewLocation.X += 1;
SetActorLocation(NewLocation);
이처럼 FPS에 따라 움직임 속도가 달라지는 문제가 발생한다. 이는 프레임 의존적 로직의 단점이다.
DeltaTime을 활용하면 프레임 독립적 로직을 구현할 수 있다. 예를 들어, 액터가 초당 100만큼 이동하려면:
FVector NewLocation = GetActorLocation();
NewLocation.X += 100 * DeltaTime;
SetActorLocation(NewLocation);
100 * 0.0167 = 1.67씩 이동 100 * 0.0083 = 0.83씩 이동 결과적으로 FPS에 관계없이 동일한 속도로 움직인다.
Tick 함수는 성능에 영향을 미친다.
SetActorTickEnabled(false)로 필요 시 Tick을 비활성화해야 한다.불필요한 연산을 피해야 한다.