Unreal/언리얼 엔진 5로 개발하는 멀티플레이어 게임(Book)
[Unreal] US_PlayerState.h 코드 분석
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는 복제될 프로퍼티를 선언하려면 이 멤버 함수를 재정의해야 한다.