본문 바로가기

프로그래밍

Unreal Engine 5에서 동적으로 Tick 제어하기

728x90

Unreal Engine 5 (UE5)에서 액터의 틱(Tick)을 동적으로 제어하는 방법을 알아보겠습니다.

틱은 액터가 매 프레임마다 실행할 코드를 정의하는 중요한 기능입니다. 하지만 모든 상황에서 틱이 필요하지 않을 수 있으므로, 이를 동적으로 활성화하거나 비활성화하는 방법을 구현해보겠습니다.

1. 새로운 C++ 클래스 생성

먼저, AActor를 상속하는 새로운 C++ 클래스를 생성합니다. 이 클래스는 틱을 제어할 수 있는 기능을 포함하게 됩니다.

2. 부울 변수 추가

틱을 제어하기 위해 부울 변수를 추가합니다. 이 변수는 틱이 활성화되어 있는지 여부를 저장합니다.

3. Tick 함수 오버라이드

Tick 함수를 오버라이드하고, 부울 변수를 사용하여 틱을 활성화하거나 비활성화합니다.

4. SetActorTickEnabled 함수 사용

SetActorTickEnabled 함수를 사용하여 틱을 제어합니다. 이 함수는 액터의 틱을 활성화하거나 비활성화하는 데 사용됩니다.

 

 

아래는 위의 단계를 구현한 코드 예제입니다:

MyActor.h

#pragma once

UCLASS()
class MYPROJECT_API AMyActor : public AActor
{
    GENERATED_BODY()

public:    
    // 이 액터의 기본 속성을 설정합니다.
    AMyActor();

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

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

    // 틱을 활성화하거나 비활성화하는 함수
    void SetTickEnabled(bool bEnable);
};

MyActor.cpp

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

// 게임이 시작되거나 스폰될 때 호출됩니다.
void AMyActor::BeginPlay()
{
    Super::BeginPlay();
}

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

    // 여기에 틱 코드 작성
}

void AMyActor::SetTickEnabled(bool bEnable)
{
    SetActorTickEnabled(bEnable);
}

 

설명

  • SetActorTickEnabled 함수는 액터의 틱을 활성화하거나 비활성화하는 데 사용됩니다.
  • SetTickEnabled 함수는 SetActorTickEnabled를 호출하여 틱을 제어합니다.

이제 코드 어디에서든 SetTickEnabled(true) 또는 SetTickEnabled(false)를 호출하여 액터의 틱 동작을 제어할 수 있습니다.

결론

이와 같이 Unreal Engine 5에서 액터의 틱을 동적으로 제어하는 방법을 구현할 수 있습니다.

이를 통해 필요할 때만 틱을 활성화하여 성능을 최적화할 수 있습니다.

 

 

 

728x90