Unreal Engine

UE5) TimerDelegate, BindLambda

나무늘보섬 2025. 5. 18. 21:56

 

Unity에는 CoroutineIEnumerator를 통해 시간 조절, 함수 실행이 가능하지만, 언리얼에는 없음

그래서 찾던 중 FTimerDelegateBindLambda를 통해 유사하게 구현

 

FTimerDelegate, BindLambda

  • 바인딩 객체로서, 타이머를 이용해 일정 시간 후 함수 실행을 시키기 위해 사용
  • 비동기적 시간 이벤트 
  • 시간을 통해 함수 실행을 예약하는 시스템 
  • -> Timer 시스템(시간)을 이용해서, 동기적으로 사용할 수도 있음

 

1. 다른 함수들을 먼저 실행해, 시간 계산

2. 계산한 시간을 이용해 선행 함수들을 실행 후 BindLambda를 통해 람다 함수 내 정의된 과정 실행

 

사용예시 1

더보기
//
#include "TimerManager.h"


APawn* PlayerPawn = UGameplayStatics::GetPlayerPawn(GetWorld(),
0);
        UFloatingPawnMovement* MoveComponent = Cast<UFloatingPawnMovement>(
            PlayerPawn->GetComponentByClass(UFloatingPawnMovement::StaticClass()));

        FTimerDelegate TimerCallback;
        TimerCallback.BindLambda([MoveComponent]()
            {
                MoveComponent->MaxSpeed = 1200.0f;
            }

 

사용예시 2

더보기

FTimerHandle InvincibleTimerHandle;
bool bIsInvincible = false;

// 무적 시작 함수
void StartInvincible()
{
    bIsInvincible = true;
    UE_LOG(LogTemp, Warning, TEXT("무적 상태 ON"));

    // 일정 시간 후 원상복귀 함수 실행
    GetWorld()->GetTimerManager().SetTimer(InvincibleTimerHandle, this, &AMyCharacter::EndInvincible, 3.0f, false);
}

// 무적 해제 함수
void EndInvincible()
{
    bIsInvincible = false;
    UE_LOG(LogTemp, Warning, TEXT("무적 상태 OFF"));
}

'Unreal Engine' 카테고리의 다른 글

UE5) DisplayName, Tag  (0) 2025.05.18
UE5) Actor의 Mesh, Collision, Material 설정하기  (0) 2025.04.26
UE5) Lighting 조정 (Allow Static Lighting)  (0) 2025.03.16