언리얼엔진5 공부

[UE5] 멀티플레이 복제 RepNotify / OnRep / ReplicatedUsing

Client Side 2025. 12. 8. 23:04

RepNotify (Replication Notification)는 "변수의 값이 클라이언트에게 복제되어 도착했을 때, 해당 클라이언트에서 특정 함수를 실행하라"는 기능을 제공합니다.

이는 UI 업데이트나 파티클 효과 재생처럼, 복제된 데이터를 받자마자 실행해야 하는 시각적 로직에 필수적입니다.

1. ReplicatedUsing (UPROPERTY의 지정자)

  • 역할: 변수가 복제될 때 호출할 함수의 이름을 언리얼 엔진에 알려주는 지정자입니다.
  • 사용법: UPROPERTY(ReplicatedUsing = OnRep_VariableName, ...)
  • 작동 방식: 이 변수가 서버에서 변경되고 클라이언트에게 복제되어 도착하면, 언리얼 엔진은 자동으로 지정된 함수 (OnRep_VariableName)를 해당 클라이언트에서 호출합니다.
// AAFGameState.h 예시
protected:
    UPROPERTY(ReplicatedUsing = OnRep_RemainingTime, BlueprintReadOnly, Category = "AFO|Time")
    int32 RemainingTimeSeconds = 0;

 

2. OnRep 함수 (RepNotify 함수)

  • 역할: ReplicatedUsing에 지정된 실제 콜백 함수입니다.
  • 작동 시점: 변수 복제가 클라이언트에 도착하여 값이 변경된 직후 (클라이언트 측에서) 실행됩니다.
  • 주요 용도: UI 업데이트, 사운드 재생, 애니메이션/파티클 재생 등 네트워크 지연 시간을 감수하고서라도 정확한 시점에 클라이언트에게 보여줘야 하는 로직에 사용됩니다.
// AAFGameState.h 예시
private:
    UFUNCTION() // UFUNCTION macro는 필수
    void OnRep_RemainingTime();