WidgetController
개요
WidgetController는 다음과 같은 데이터를 관리합니다:
AbilitySystemComponent: 캐릭터의 능력 시스템 정보.AttributeSet: 캐릭터의 속성 값(Health, Mana 등).
이를 바탕으로 속성 값이 변경되면 Delegate를 통해 데이터를 확인하고, 이를 Overlay(View)에 바인딩합니다.
구조
주요 데이터 멤버
WidgetController에서 속성값을 담기 위해 필요한 주요 정보는 다음과 같습니다
UPROPERTY(BlueprintReadOnly, Category = "WidgetController")
TObjectPtr<APlayerController> PlayerController;
UPROPERTY(BlueprintReadOnly, Category = "WidgetController")
TObjectPtr<APlayerState> PlayerState;
UPROPERTY(BlueprintReadOnly, Category = "WidgetController")
TObjectPtr<UAbilitySystemComponent> AbilitySystemComponent;
UPROPERTY(BlueprintReadOnly, Category = "WidgetController")
TObjectPtr<UAttributeSet> AttributeSet;
Delegate를 활용한 데이터 바인딩
속성 값이 변경되었을 때, 이를 다른 컴포넌트나 UI(View)에 전달하기 위한 Delegate들이 정의되어 있습니다:
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnAttributeChanged, float, NewValue /*Attribute*/);
// 중략
UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
FOnAttributeChanged OnHealthChanged;
UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
FOnAttributeChanged OnMaxHealthChanged;
UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
FOnAttributeChanged OnManaChanged;
UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
FOnAttributeChanged OnMaxManaChanged;
이 Delegate들을 활용하여 Attribute 값이 변경될 때 실시간으로 UI를 갱신할 수 있습니다.
Last modified: 09 December 2024