내일배움캠프-언리얼

TIL - 77

이시보 2026. 5. 20. 22:39

Component에서 부착 Actor의 ASC 가져오기

현재 구조

ElementGaugeComponent (UActorComponent)
  └─ GetOwner() → ASovereignCharacter (APawn 상속)
        └─ GetPlayerState<ARetrievePlayerState>()
              └─ GetRetrieveAbilitySystemComponent() → URetrieveAbilitySystemComponent*

 

헤더 파일에 ASC 캐싱

// 클래스 내부에 추가
public:
    URetrieveAbilitySystemComponent* GetRetrieveASC() const;

private:
    // const 함수에서 캐시 갱신할 수 있게 mutable
    UPROPERTY(Transient)
    mutable TWeakObjectPtr<URetrieveAbilitySystemComponent> CachedASC;

cpp에 ASC 가져오는 함수 구현

URetrieveAbilitySystemComponent* UElementGaugeComponent::GetRetrieveASC() const
{
    if (CachedASC.IsValid())
    {
        return CachedASC.Get();
    }

    const APawn* OwnerPawn = Cast<APawn>(GetOwner());
    if (!OwnerPawn) return nullptr;

    ARetrievePlayerState* PS = OwnerPawn->GetPlayerState<ARetrievePlayerState>();
    if (!PS) return nullptr;

    URetrieveAbilitySystemComponent* ASC = PS->GetRetrieveAbilitySystemComponent();
    CachedASC = ASC;
    return ASC;
}

 

'내일배움캠프-언리얼' 카테고리의 다른 글

TIL - 79  (0) 2026.05.26
TIL - 78  (0) 2026.05.21
TIL - 76  (0) 2026.05.19
TIL - 75  (0) 2026.05.13
TIL - 74  (0) 2026.05.07