0. 개요
게임플레이 이펙트에 태그를 적용했고, 이전 포스트를 따라 델리게이트 - 바인딩 - 브로드캐스팅을 마쳤다면 포션을 습득하면 화면 좌상단에 태그가 올바르게 출력될 것이다.
이제는 태그를 직접 출력하는게 아니라 데이터 테이블에서 태그를 검색하여 정보를 UI 위젯에 전달하게 할 것이다.
1. C++에서 데이터 테이블 생성
(1) OverlayWidgetController
#include "CoreMinimal.h"
#include "UI/WidgetController/AuraWidgetController.h"
#include "GameplayTagContainer.h"
#include "Engine/DataTable.h"
#include "OverlayWidgetController.generated.h"
class UAuraUserWidget;
//~~~~~~~~~~~~~~~
USTRUCT(BlueprintType)
struct FUIWidgetRow : public FTableRowBase
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadOnly)
FGameplayTag MessageTag = FGameplayTag();
UPROPERTY(EditAnywhere, BlueprintReadOnly)
FText Message = FText();
UPROPERTY(EditAnywhere, BlueprintReadOnly)
TSubclassOf<UAuraUserWidget> MessageWidget;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
UTexture2D* Image = nullptr;
};
FUIWidgetRow 라는 구조체를 생성해서 이를 이용해 데이터 테이블을 제작할 것이다.
(2) 언리얼 에디터에서 데이터 테이블 생성
에디터의 컨텐츠 브라우저에서 데이터 테이블을 생성한다.
행 구조는 방금 정의한 구조체를 선택한다.
(3) 데이터 테이블
해당 데이터 테이블을 이용해 태그, 메시지, 데이터를 전달할 위젯, 이미지를 선택하게 할 수 있다.
2. 게임플레이 태그 추가하기
태그에 따라 메시지를 전달할 수 있도록 메시지 태그를 추가한다.
위젯 컨트롤러가 태그를 받으면 데이터 테이블을 통해 메시지를 전달하고, 전달받은 메시지에 따라 이미지 등등을 UI에 적용할 수 있도록 준비되었다.
3. 오버레이 위젯 컨트롤러 다듬기
protected:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Widget Data")
TObjectPtr<UDataTable> MessageWidgetDataTable;
오버레이 위젯 컨트롤러의 블루프린트에서 메시지 위젯 데이터 테이블을 가져다 쓸 수 있도록 설정한다.
에디터에서 설정해준다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
5-10. UI - (3) 데이터 테이블 행을 위젯에 전달하기 (0) | 2024.09.02 |
---|---|
5-9. UI - (2) 데이터 테이블에서 정보 가져오기 (1) | 2024.09.02 |
5-7. 에셋 태그를 위젯 컨트롤러로 전달(Broadcast)하기 (1) | 2024.09.02 |
5-6. 액터가 보유한 태그 가져오기 - GetAllAssetTags (0) | 2024.08.30 |
5-5. 게임플레이 이펙트 - (3) 델리게이트 (0) | 2024.08.30 |