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;

오버레이 위젯 컨트롤러의 블루프린트에서 메시지 위젯 데이터 테이블을 가져다 쓸 수 있도록 설정한다.

에디터에서 설정해준다.