suppresswisely 2025. 3. 25. 16:08

변수 선언

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, ReplicatedUsing = "OnRep_Xp", Category = "Experience")
int Xp = 0;

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, ReplicatedUsing = "OnRep_CharacterLevelUp", Category = "Experience")
int CharacterLevel = 1;

 

ReplicatedUsing이전 글에 작성한 내용을 보면, 프로퍼티가 업데이트될 때 콜백 함수를 실행해야 한다면 작성하는 옵션이다.

콜백 함수

UFUNCTION()
void OnRep_Xp(int32 OldValue) const;

UFUNCTION()
void OnRep_CharacterLevelUp(int32 OldValue) const;

 

언리얼 엔진에서 OnRep_로 시작하는 함수는 해당 변수의 ReplicatedUsing 속성에 의해 지정된 변수의 변경을 감지한다. 따라서 위와 같이 함수 앞에 OnRep_가 있는 것을 확인할 수 있다.

델리게이트 멀티캐스트

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnXpChanged, int32, NewXp);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCharacterLevelUp, int32, NewLevelXp);

 

두 프로퍼티에 대한 이벤트를 브로드캐스트해야 하므로, 각 프로퍼티당 하나씩 2개의 델리게이트를 선언한다.
멀티캐스트 선언을 사용하면 여러 함수 델리게이트를 연결하고 Broadcast() 함수를 사용해 시스템의 변경 사항을 모든 리스너에게 알릴 수 있다.

리플리케이션용 프로퍼티 구성

virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;

 

GetLifetimeReplicatedProps는 복제될 프로퍼티를 선언하려면 이 멤버 함수를 재정의해야 한다.