본문 바로가기

프로그래밍

언리얼5에서 파라미터 전달 타이머 만들기

728x90

 UE5에서 파라미터를 사용하는 타이머 함수의 예제 코드입니다:

  1. 파라미터를 사용하는 함수를 생성합니다.
  2. 파라미터를 넣을 수 있는 오브젝트 델리게이트를 생성합니다
  3. 타이머를 설정 및 2에서 만든 델리데이트를 전달 합니다.

다음은 간단한 예제입니다:

UCLASS()
class MYPROJECT_API AMyActor : public AActor
{
    GENERATED_BODY()
    
public:    
    // 이 액터의 기본 값을 설정합니다.
    AMyActor();

protected:
    // 게임 시작 시 또는 스폰될 때 호출됩니다.
    virtual void BeginPlay() override;

public:    
    // 매 프레임마다 호출됩니다.
    virtual void Tick(float DeltaTime) override;

    // 타이머에 의해 호출될 함수
    UFUNCTION()
    void MyTimerFunction(int32 MyParameter);

    // 타이머를 시작하는 함수
    void StartTimer();

private:
    FTimerHandle TimerHandle;
};

 

// 기본 값을 설정합니다.
AMyActor::AMyActor()
{
    // 이 액터가 매 프레임마다 Tick()을 호출하도록 설정합니다. 필요하지 않으면 성능을 위해 끌 수 있습니다.
    PrimaryActorTick.bCanEverTick = true;
}

// 게임 시작 시 또는 스폰될 때 호출됩니다.
void AMyActor::BeginPlay()
{
    Super::BeginPlay();
    
    // 타이머를 시작합니다.
    StartTimer();
}

// 매 프레임마다 호출됩니다.
void AMyActor::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);
}

void AMyActor::MyTimerFunction(int32 MyParameter)
{
    UE_LOG(LogTemp, Warning, TEXT("타이머 함수가 파라미터와 함께 호출되었습니다: %d"), MyParameter);
}

void AMyActor::StartTimer()
{
    int32 MyParameter = 42; // 예제 파라미터 값
    GetWorld()->GetTimerManager().SetTimer(TimerHandle, FTimerDelegate::CreateUObject(this, &AMyActor::MyTimerFunction, MyParameter), 5.0f, false);
}

 

이 예제에서:

  • MyTimerFunction은 타이머에 의해 호출될 함수이며, int32 파라미터를 받습니다.
  • StartTimer는 5초 후에 파라미터 값 42와 함께 MyTimerFunction을 호출하도록 타이머를 설정합니다.
728x90