언리얼엔진5 공부

기본적인 멀티플레이 변수 복제 흐름

Client Side 2025. 12. 3. 23:34
  • 액터/컴포넌트의 생성자에서 SetReplicates(true) or bReplicates = true 호출
    • 액터를 먼저 복제가능하게 해야 그 안의 변수들도 복제 가능하다.
    • 처음부터 true여서 따로 수정하지 않아도 되는 클래스들
      • APlayerState
      • AGameState
      • ACharacter (Pawn은 아님)
      • APlayerController
    • 복제되지 않는 중요한 클래스 (서버 전용)
      • AGameMode
      • UGameInstance
  • 변수 선언 시 UPROPERTY(Replicated) 추가
  • GetLifetimeReplicatedProps 함수 재정의
    • virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
    • 나는 복제할 변수들이 있으니, 언리얼 엔진 네트워크 시스템이 오면 알려줄게요! 하고 준비하는 단계. 함수의 형식 고정.
    • Lifetime은 생명주기를 의미한다.
    • 생명주기동안 복제될 프로퍼티들을 가져와라 라는 의미의 함수.
  • .cpp 파일에서 DOREPLIFETIME 매크로 사용
    • #include "Net/UnrealNetwork.h" 반드시 추가해야 매크로 사용 가능
    • 함수 사용
    • 이 변수를 복제해주세요! 하고 등록하는 절차.
    • 인자
      • ClassName : 복제하고 싶은 변수가 속한 클래스의 이름.
      • PropertyName : 복제하고 싶은 변수의 이름.
  • 만약 복제하고 싶은 변수가 여러개라면, DOREPLIFETIME을 여러 번 사용한다.
void AYourClass::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
    Super::GetLifetimeReplicatedProps(OutLifetimeProps); // 부모 클래스의 복제 로직도 반드시 호출

    // 여기에 복제하고 싶은 변수를 등록
    DOREPLIFETIME(AYourClass, MyReplicatedInt);
}