1. 유저 위젯(User Widget)
위젯을 만들 때 상속받게 될 위젯이다.
데이터에 접근하기 위해 필요한 위젯 컨트롤러를 설정하고 설정이 완료되면 블루프린트에서 정의하는 함수인 WidgetControllerSet 함수를 호출한다.
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "AuraUserWidget.generated.h"
UCLASS()
class AURA_API UAuraUserWidget : public UUserWidget
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable)
void SetWidgetController(UObject* InWidgetController);
UPROPERTY(BlueprintReadOnly)
TObjectPtr<UObject> WidgetController;
protected:
UFUNCTION(BlueprintImplementableEvent)
void WidgetControllerSet();
};
#include "UI/Widget/AuraUserWidget.h"
void UAuraUserWidget::SetWidgetController(UObject* InWidgetController)
{
WidgetController = InWidgetController;
WidgetControllerSet();
}
WidgetControllerSet 함수는 블루프린트에서 정의될 것이므로 해당 Cpp 파일에 구현하면 컴파일 시 오류가 발생할 것이다.
BlueprintImplementableEvent로 정의된 함수는 반드시 블루프린트에서 정의해야 한다.
C++에서 정의하면 여러 번 정의된 함수가 있다는 컴파일 에러가 발생한다.
2. 위젯 컨트롤러(Widget Controller)
데이터(모델)에 접근하는 중간 개체이다.
딱히 어떤 형태를 가질 필요가 없으므로 UObject를 상속받는다.
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "AuraWidgetController.generated.h"
class UAttributeSet;
class UAbilitySystemComponent;
UCLASS()
class AURA_API UAuraWidgetController : public UObject
{
GENERATED_BODY()
protected:
// 종속성 설정
// 플레이어 스테이트 , 플레이어 컨트롤러, 속성 세트, 어빌리티 시스템 컴포넌트
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;
};
다양한 형태의 정보를 가져오기 위해 플레이어 스테이트, 플레이어 컨트롤러, 속성 세트, 어빌리티 시스템 컴포넌트에 접근할 준비를 해놓는다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
3-4. 오버레이 위젯 컨트롤러(Overlay Widget Controller) (0) | 2024.08.22 |
---|---|
3-3. HUD(Head-Up Display) (0) | 2024.08.21 |
3-1. RPG 게임 기본 UI 구조 (0) | 2024.08.21 |
2-9. 이펙트 액터(Effect Actor) (0) | 2024.08.20 |
2-8. 속성 접근자(Attribute Accessors) (0) | 2024.08.20 |