티스토리 뷰

오늘은 언리얼 데이터테이블 기능을 사용해보았다.

데이터 테이블이란 말그대로 언리얼 상에서 데이터들을 조작할 수 있게 만들어둔 표다.

 

만드는 방법은 다음과 같다.

기타에서 데이터 테이블을 선택하고 만든 뒤에

 

어떤 구조로 테이블을 만들 것인지 고른다. 나는 아이템의 희귀도를 구분하기 위해 만든 구조체를 사용했다.

USTRUCT(BlueprintType)
struct FItemRarityTable : public FTableRowBase
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FLinearColor GlowColor;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FLinearColor LightColor;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FLinearColor DarkColor;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 NumberOfStars;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UTexture2D* IconBackground;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 CustomDepthStencil;
};

구조체의 모습은 위와 같다. 위의 구조체로 데이터 테이블을 만들면 

이렇게 만들어진다. 내가 구조체 안에서 설정한 값들이 들어가 있다.

위의 추가를 누르면 원하는 타입으로 테이블을 계속 확장할 수 있다.

 

그렇게 만든 구조체 테이블.

 

이렇게 구조체 테이블을 만든뒤에 C++상에서 구조체 테이블을 찾아서 사용할 수 있다.

레퍼런스 경로를 받아와서 데이터 테이블을 찾아주면 된다.

 

FString RarityTablePath(TEXT("/Script/Engine.DataTable'/Game/_Game/DataTable/ItemRarityDataTable.ItemRarityDataTable'"));
UDataTable* RarityTableObject = Cast<UDataTable>(StaticLoadObject(UDataTable::StaticClass(), nullptr, *RarityTablePath));

테이블을 찾는 함수!

 

테이블을 올바르게 찾았다면 원하는 값을 FindRow 를 통해 찾아주면 된다.

아래는 예시

switch (ItemRarity)
{
	case EItemRarity::EIR_Damaged:
		RarityRow = RarityTableObject->FindRow<FItemRarityTable>(FName("Damaged"), TEXT(""));
		break;
	case EItemRarity::EIR_Common:
		RarityRow = RarityTableObject->FindRow<FItemRarityTable>(FName("Common"), TEXT(""));
		break;
	case EItemRarity::EIR_Uncommon:
		RarityRow = RarityTableObject->FindRow<FItemRarityTable>(FName("Uncommon"), TEXT(""));
		break;
	case EItemRarity::EIR_Rare:
		RarityRow = RarityTableObject->FindRow<FItemRarityTable>(FName("Rare"), TEXT(""));
		break;
	case EItemRarity::EIR_Legendary:
		RarityRow = RarityTableObject->FindRow<FItemRarityTable>(FName("Legendary"), TEXT(""));
		break;
}

빈 값이 들어가는 두번째 파라미터는 검색이 잘 안되었을 시에 오류 메시지를 출력한다고 한다. 나는 무조건 찾는다는 가정하에 빈 메시지를 넣었는데 오류 메시지를 확인하고자 한다면 TEXT 변수를 넣어주면 되겠다!

 

 

그렇게 얻은 오늘의 결과

아이템의 희귀도에 맞춰 아웃라인선, UI색깔이 올바르게 나타나는 모습이다.

'Unreal > Shooter Project (完)' 카테고리의 다른 글

[UE5] FPS 프로젝트 - 21  (0) 2023.07.12
[UE5] FPS 프로젝트 - 20  (0) 2023.07.07
[UE5] FPS 프로젝트 - 18  (0) 2023.07.06
[UE5] FPS 프로젝트 - 17  (0) 2023.07.04
[UE5] FPS 프로젝트 - 16  (0) 2023.06.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함