📘Unreal Engine/📝Network

[Unreal Engine] 서브 오브젝트 리플리케이션 (ReplicateSubobjects)

주으기 2025. 2. 20. 15:11
728x90
반응형

|사용 참고|

ReplicateSubobjects는 네트워크 리플리케이션을 수행할 때 사용되는 함수이다.

기본적으로 언리얼 엔진의 네트워크 리플리케이션 시스템은 AActorUActorComponent에 대해서만 자동으로 복제를 수행한다.

특정한 서브 오브젝트(ex. UObject 기반 클래스)들은 자동으로 복제되지 않는다.

이러한 서브 오브젝트를 복제하려면 ReplicateSubobjects를 오버라이드하여 직접 처리해줘야 한다.

 

// .h
virtual bool ReplicateSubobjects(class UActorChannel* Channel, class FOutBunch* Bunch, FReplicationFlags* RepFlags) override;

 

 

부모 클래스의 ReplicateSubobjects를 먼저 호출하여 기본적인 복제 작업 수행한다.

복제할 서브 오브젝트가 존재하는지 확인하고, UActorChannelReplicateSubobject 함수를 호출하여, 개별 서브 오브젝트들의 복제 작업을 수행한다.

복제 수행 결괏값은, 기존의 부모 복제 작업 결과와 OR연산을 한다.

최종적으로 복제가 수행되었으면 true를 반환한다.

// .cpp

#include "Engine/ActorChannel.h"

bool AMyActor::ReplicateSubobjects(UActorChannel* Channel, FOutBunch* Bunch, FReplicationFlags* RepFlags)
{
    bool bWroteSomething = Super::ReplicateSubobjects(Channel, Bunch, RepFlags);

    if (MySubObject)
    {
        bWroteSomething |= Channel->ReplicateSubobject(MySubObject, *Bunch, *RepFlags);
    }

    return bWroteSomething;
}

 

 

 

 

 

728x90
반응형