RepNotify는 복제된 변수가 변수값이 변경될때호출되는 핸들러 함수를 가질 수 있음을 의미한다.
예를 들어 _HealthPoints에 RepNotify 함수 OnHealthPointsChanged()가 지정됐다면 변수값이 변경돼 클라이언트에 복제될때 연결된 모든 클라이언트에서 OnHealthPointsChanged()가 호출된다.
RPC와 비교했을때 RepNotify 코드가 간소화할 수 있고 네트워크 대역폭을 덜 사용하므로 좀 더 효울과적으로 사용 가능하다
RepNotify 핸들러 함수 만들기
서버에서 네트워크를 통해 특정한 속성값이 복제될때 클라이언트 사이드에서 적절한 동작을 수행하려면 함수와 이 속송을 연동해야 할것이다.
게임 Pangaea에서 Actor의 _HealthPoints값이 서버에서 업데이트 될때 체력 바가 변경되는 것을 시각화 하려면 APangaeaCharacter클래스에 UFUNCTION 매크로로 OnHealthPointsChanged()를 추가해야 한다. PangaeaCharacter.h 파일에 다음 코드를 추가한다.
UFUNCTION()
void OnHealthPointsChanged();
CPP에서 다음과 같이 구현한다.
void APangaeaCharacter::OnHealthPointsChanged()
{
//체력바를 업데이트하기 위한 코드
}
void APangaeaCharacter::OnHealthPointsChanged()
{
if (HealthBarWidget != nullptr)
{
float normalizedHealth = FMath::Clamp((float)_HealthPoints / HealthPoints, 0.0f, 1.0f);
auto healthBar = Cast<UHealthBarWidget>(HealthBarWidget);
healthBar->HealthProgressBar->SetPercent(normalizedHealth);
}
if (_AnimInstance != nullptr)
{
_AnimInstance->State = ECharacterState::Hit;
}
if (IsKilled())
{
PrimaryActorTick.bCanEverTick = false;
}
}
'언리얼러닝 > C++스크립트게임개발' 카테고리의 다른 글
복제를 통한 클라이언트와 액터 변수 동기화 하기 (0) | 2025.06.07 |
---|---|
네트워크 멀티플레이어 게임 만들기 - 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 |