Replicated 키워드
액터의 bReplicates를 true로 하면
해당 액터가 Server에서 모든 클라로 복제가 된다
그런데 액터의 속성(멤버 변수)을 복제하고 싶은 경우에
Replicated 키워드를 아래와 같이 작성하고
UPROPERTY(Replicated, VisibleAnywhere, BlueprintReadOnly, Category = "ASLandMine", meta = (AllowPrivateAccess))
uint8 bIsExploded : 1;
GetLifetimeReplicatedProps 함수 내에서
해당 속성을 DOREPLIFETIME을 통해 지정해줘야 한다
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
...
#include "Net/UnrealNetwork.h"
#include "Engine/Engine.h"
void ASLandMine::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
DOREPLIFETIME(ThisClass, bIsExploded);
}
Replicated_Using 키워드
키워드가 작성된 속성의 복제가 발생할 때
단순히 복제 (Replicated 키워드 기능) 뿐 아니라 추가적으로 함수를 실행한다
class STUDYPROJECT_API ASLandMine : public AActor
{
...
public:
...
UFUNCTION()
void OnRep_IsExploded();
private:
...
UPROPERTY(ReplicatedUsing = OnRep_IsExploded, VisibleAnywhere, BlueprintReadOnly, Category = "ASLandMine", meta = (AllowPrivateAccess))
uint8 bIsExploded : 1;
...
};
예를 들어
A 클라 기준으로 특정 액터가 net cull distance 밖에 있다가 안으로 들어온 경우
해당 액터의 복제가 발생하고 해당 액터의 모든 Replicated Using 함수가 각 클라에서 호출이 된다
또 다른 예를 들면
Server 기준으로 특정 액터의 Replicated Using 키워드가 붙은 속성의 값이 변경되면
변경된 해당 속성의 복제가 발생하고 각 클라에서 해당 Replicated Using 함수가 호출이 된다
'게임 엔진 - 언리얼 > [코드조선] 언리얼 데디서버' 카테고리의 다른 글
[언리얼 데디] 게임모드와 게임스테이트 (1) | 2025.03.07 |
---|---|
[언리얼 데디] 애니메이션 동기화 (0) | 2025.03.07 |
[언리얼 데디] 함수 내부에서의 구분 (0) | 2025.03.07 |
[언리얼 데디] RPC 활용 (0) | 2025.03.07 |
[언리얼 데디] RPC 키워드 사용법 (0) | 2025.03.07 |