Actor 변수중 Replicated 태그가 붙은 변수들은 그 값이 변경될때 연결된 리모트 프록시에 자동으로 변경된 값이 복제된다.
예를 들어, 캐릭터는 자신의 _HealthPoints값을 서버에서 복제한 다음 체력 포인트 바를 통해 변경된 내용을 다른 클라이언트에게 표시한다.
우선 HealthBar위젯을 만들고 캐릭터의 체력을 제대로 표시하기 위해 복제 알림을 추가할 것이다.
PangaeaCharacter.h를 열고 _HealthPoints변수에 대한 UPROPERTY 매크로의 식별자로 Replicated 태그를 추가한다.
UPROPERTY(Replicate)
int _HealthPoints;
다음 받은 파일에는 다음과 같이 되어 있다.
UPROPERTY(Replicatedusing = OnHealthPointsChanged)
int _HealthPoints;
void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
PangaeaCharacter.cpp에 다음 코드를 추가한다.
#include <Net/UnrealNetwork.h>
void APangaeaCharacter::GetLifetimeReplicatedProps(TArray< FLifetimeProperty >& OutLifetimeProps) const
{
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
DOREPLIFETIME(APangaeaCharacter, _HealthPoints);
}
APangaeaCharacter::APangaeaCharacter()
{
PrimaryActorTick.bCanEverTick = true;
bReplicates = true;
}
#include <Net/UnrealNetwork.h>를 포함시켜 DOREPLIFETIME() 매크로를 호출할수 있게 해준다.
GetLifetimeReplicatedProps() 함수는 슈퍼클래스의 오버라이드된 함수의 DOREPLIFETIME() 매크로를 호출해 _HealthPoints 변수를 복제한다.
APangaeaCharacter() 생성자에서 bReplicates = true; 설정해 캐릭터와 네트워크 변수가 복제되도록 한다.
이제 게임을 플레이 하는 동안 캐릭터의 _HealthPoints 변수가 서버에서 바뀌면 그 값이 복제돼 접속돼 있는 모든 클라이언트에서 그에 대응하는 캐릭터의 _HealthPoints 가 업데이트 된다.
그 다음으로 수행할 작업은 체력바를 만들어 캐릭터의 _HealthPoints 변수를 직접 보여주는 것이다.
'언리얼러닝 > C++스크립트게임개발' 카테고리의 다른 글
RepNotify를 통해 캐릭터의 체력바 업데이트 하기 (0) | 2025.06.09 |
---|---|
네트워크 멀티플레이어 게임 만들기 - RPC (0) | 2025.06.07 |
적 캐릭터 생성하기 Enemy Class (1) | 2025.06.07 |
EnhancedInput vs LegacyInput, Input Error (0) | 2025.05.27 |
7장 CanAttack() Attack() 함수 구현하기 (0) | 2025.05.27 |