언리얼 데이터 테이블 다루기

roberto·2025년 2월 12일
  • 난 개인적으로 프로젝트할 때 항상 가장 재밌는 부분은 데이터 관련 업무들이었다.
  • 데이터 구조 설계하고, 다른 개발자들이 쓰기 편하도록 데이터 관련 함수 만들어주는 게 지금도 가장 재밌다.

구조체 만들기

  • 구조체를 따로 만들 수는 없어서 일단 클래스를 만들고 수정하는 형태로 해야한다.
#pragma once

#include "CoreMinimal.h"
#include "ItemSpawnRow.generated.h"

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

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FName ItemName;
	
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSubclassOf<AActor> ItemClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float Spawnchance;
};

cpp파일은 만질 게 없다.

미리 정의한 ItemSpawnRow라는 구조체가 보인다. 이걸 그대로 만들어 주면 된다.

굉장히 친절하게 만들어뒀지만, 개인적으로 데이터 만지는 손맛은 좀 덜한 것 같다. 아마 방법은 있기야 하겠고 실제로는 그렇게 쓸 거라 생각하지만, Json이나 CSV로 받아서 사용하는게 손맛은 확실히 좋을 것 같다고 생각한다.

TArray<FItemSpawnRow*> AllRows;
	static const FString ContextString(TEXT("ItemSpawnContext"));
	
	ItemDataTable->GetAllRows(ContextString,AllRows);

그리고 코드상에서는 구조체 배열을 만들어 놓고, GetAllRows라는 함수를 통해 받아오는데, 첫번째 파라미터는 단순히 디버깅용 플래그로만 사용을 한다.

  • Json 혹은 CSV로 데이터를 받아와서, 구조체 형태로 데이터를 저장해놓고, 필요할 때 데이터를 넘겨주는 걸 가장 좋아하는 사람으로써, 아마 앞으로 이 기능을 많이 사용하지 않을까 싶다.
profile
아마도 개발 관련된 것만 올릴듯한 벨로그

0개의 댓글