내일배움캠프-언리얼

[내일배움캠프 - 언리얼] TIL - 64

이시보 2026. 3. 11. 20:53

EnableGDT

Gameplay Ability System의 디버거 UI를 보기 위해 EnableGDT를 호출하였더니 에러가 났다

check(RepNotifyCondition == Other.RepNotifyCondition);

 

데이터 변형 과정에서 로컬 객체와 복제된 객체의 상태가 일치하지 않아 발생한 오류이다

 

MyAttributeSet에서 GetLifetimeReplicatedProps(...)에서 매크로 단순화를 해주니 해결되었다.

// 수정 전
void UMyAttributeSet::GetLifetimeReplicatedProps(TArray<class FLifetimeProperty>& OutLifetimeProps) const
{
    Super::GetLifetimeReplicatedProps(OutLifetimeProps);

    DOREPLIFETIME(UMyAttributeSet, Health);
    DOREPLIFETIME(UMyAttributeSet, MaxHealth);
    DOREPLIFETIME(UMyAttributeSet, Stamina);
    DOREPLIFETIME(UMyAttributeSet, MaxStamina);
    DOREPLIFETIME_CONDITION_NOTIFY(UMyAttributeSet, Defense, COND_None, REPNOTIFY_Always);
}

// 수정 후
void UMyAttributeSet::GetLifetimeReplicatedProps(TArray<class FLifetimeProperty>& OutLifetimeProps) const
{
    Super::GetLifetimeReplicatedProps(OutLifetimeProps);

    DOREPLIFETIME_CONDITION_NOTIFY(UMyAttributeSet, Health, COND_None, REPNOTIFY_Always);
    DOREPLIFETIME_CONDITION_NOTIFY(UMyAttributeSet, MaxHealth, COND_None, REPNOTIFY_Always);
    DOREPLIFETIME_CONDITION_NOTIFY(UMyAttributeSet, Stamina, COND_None, REPNOTIFY_Always);
    DOREPLIFETIME_CONDITION_NOTIFY(UMyAttributeSet, MaxStamina, COND_None, REPNOTIFY_Always);
    DOREPLIFETIME_CONDITION_NOTIFY(UMyAttributeSet, Defense, COND_None, REPNOTIFY_Always);
}