- 액터/컴포넌트의 생성자에서 SetReplicates(true) or bReplicates = true 호출
- 액터를 먼저 복제가능하게 해야 그 안의 변수들도 복제 가능하다.
- 처음부터 true여서 따로 수정하지 않아도 되는 클래스들
- APlayerState
- AGameState
- ACharacter (Pawn은 아님)
- APlayerController
- 복제되지 않는 중요한 클래스 (서버 전용)
- 변수 선언 시 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);
}