본문 바로가기

프로그래밍

"DOREPLIFETIME_CONDITION"를 사용해서 생성 시 한번만 동기화 하기

728x90

Unreal Engine 5에서 네트워크를 통해 객체의 속성을 복제할 때 GetLifetimeReplicatedProps 함수와 DOREPLIFETIME_CONDITION 매크로를 사용합니다. 이 함수와 매크로를 통해 어떤 속성을 복제할지, 그리고 어떤 조건에서 복제할지를 정의할 수 있습니다.

GetLifetimeReplicatedProps 함수

  • 목적: 객체의 수명 동안 복제될 속성을 지정하는 함수입니다.
  • 사용법:
    1. Engine/Net/NetDriver.h 헤더를 포함합니다.
    2. GetLifetimeReplicatedProps 함수를 오버라이드합니다.
    3. DOREPLIFETIME 또는 DOREPLIFETIME_CONDITION 매크로를 사용하여 복제할 속성을 추가합니다.

DOREPLIFETIME_CONDITION 매크로

  • 목적: 특정 조건에 따라 속성이 복제되도록 하는 매크로입니다.
  • 사용법:
    1. DOREPLIFETIME_CONDITION 매크로를 사용하여 복제할 속성과 조건을 지정합니다.
    2. COND_InitialOnly 조건을 사용하면 객체가 처음 생성될 때만 속성이 복제됩니다.
C++

AMyReplicatedActor::AMyReplicatedActor()
{
    PrimaryActorTick.bCanEverTick = true;

    // Set replication properties
    bReplicates = true;
}

void AMyReplicatedActor::GetLifetimeReplicatedProps(TArray< FLifetimeProperty >& OutLifetimeProps) const
{
    Super::GetLifetimeReplicatedProps(OutLifetimeProps);

    // Replicate MyReplicatedVariable only initially
    DOREPLIFETIME_CONDITION(AMyReplicatedActor, MyReplicatedVariable, COND_InitialOnly);
}
 

위 예시에서 MyReplicatedVariable 속성은 AMyReplicatedActor 객체가 처음 생성될 때 서버에서 클라이언트로 한 번만 복제됩니다. 이후에는 값이 변경되더라도 복제되지 않습니다.

요약

  • GetLifetimeReplicatedProps 함수는 객체의 수명 동안 복제될 속성을 정의합니다.
  • DOREPLIFETIME_CONDITION 매크로는 복제 조건을 지정합니다.
  • COND_InitialOnly 조건을 사용하면 객체가 처음 생성될 때만 속성이 복제됩니다.
728x90