Unreal Engine - Data Table

2025. 2. 3. 19:55·Unreal Engine

1. Data Table 만들기


Data Table은 언리얼에서 많은 데이터를 처리할 때 사용하기 유용한 방식이다. (CSV 사용 가능)

이번 예시는 data table에 actor를 스폰할 위치를 지정해두고, spawner를 통해 해당 위치에 스폰하는 것을 구현해 볼 것이다.

 

  • 먼저 Data Table을 만들려고 하면, 아래 사진과 같이 먼저 행 구조를 선택하라고 한다.

  • 행 구조는 FTableRowBase를 상속받아서 만든 구조체를 사용하면 된다.
    • 이때 구조체는 UE 에디터에서 만들 수 없어서, VS에서 따로 파일을 추가하여 만들어 주면 된다.
      • USTRUCT() 매크로와
      • 구조체 앞에 F를 붙여주어야 한다.
    • 이번 예시에서는 actor가 스폰될 위치와 회전값을 저장했다.
#pragma once

#include "CoreMinimal.h"
#include "PlatformSpawnData.generated.h"

USTRUCT(BlueprintType)
struct SCC_CH3_6_API FPlatformSpawnData : public FTableRowBase
{
	GENERATED_BODY()

public:
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
	FVector Position;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
	FRotator Rotator;
};

 

 

 

2. Data Table 값 작성


  • 위에서 행 구조를 만들고 나면, 데이터 테이블 생성시 우리가 만든 행 구조 이름이 뜨는 것을 볼 수 있다.

  • 행을 선택하여 데이터 테이블을 만들게 되면, 아래와 같이 값을 넣을 수 있다.

  • 이 값을 JSON이나 CSV로 익스포트 한 다음 수정하여, 리임포트 할 수도 있다.

CSV로 저장하여 확인해 본 모습

 

 

3. Data Table 사용하기


이번 예시에서는 Spawner라는 클래스를 만들고, 해당 클래스에서 Falling Platform 이라는 Actor를 생성할 것이다.

  • PlatformSpawner.h 파일
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "PlatformSpawner.generated.h"

class AFallingPlatform;
class UDataTable;

UCLASS()
class SCC_CH3_6_API APlatformSpawner : public AActor
{
	GENERATED_BODY()
	
public:	
	APlatformSpawner();

protected:
	virtual void BeginPlay() override;

public:
	UFUNCTION()
	void SpawnPlatform();

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "PlatformSpawn")
	UDataTable* SpawnDataTable;
};
  • PlatformSpawner.cpp 파일
#include "PlatformSpawner.h"
#include "Engine/DataTable.h"
#include "PlatformSpawnData.h"
#include "FallingPlatform.h"

APlatformSpawner::APlatformSpawner()
	:SpawnDataTable(nullptr)
{
	PrimaryActorTick.bCanEverTick = false;
}

void APlatformSpawner::BeginPlay()
{
	Super::BeginPlay();
	
	SpawnPlatform();
}


void APlatformSpawner::SpawnPlatform()
{
	if (!SpawnDataTable)
	{
		return;
	}

	TArray<FName> RowNames = SpawnDataTable->GetRowNames();
	for (const FName RowName : RowNames)
	{
		FPlatformSpawnData* Row = SpawnDataTable->FindRow<FPlatformSpawnData>(RowName, "");
		if (Row)
		{
			FActorSpawnParameters SpawnParams;
			SpawnParams.Owner = this;

			GetWorld()->SpawnActor<AFallingPlatform>(
				AFallingPlatform::StaticClass()
				, Row->Position
				, Row->Rotator
				, SpawnParams
			);
		}
	}
}
  • 아래 사진처럼 우리가 원하는 위치에 Actor가 스폰된 것을 볼 수 있다.

 

'Unreal Engine' 카테고리의 다른 글

Unreal Engine - 아이템 만들기 (+충돌 처리)  (1) 2025.02.06
Unreal Engine - Simple Niagara (with cpp)  (0) 2025.02.04
UE5 Issues : C++ 충돌 처리  (1) 2025.01.27
UE5 Issues : Additive Animation (animation sequence 색깔)  (0) 2025.01.26
Unreal Engine - 캐릭터 만들기  (0) 2025.01.24
'Unreal Engine' 카테고리의 다른 글
  • Unreal Engine - 아이템 만들기 (+충돌 처리)
  • Unreal Engine - Simple Niagara (with cpp)
  • UE5 Issues : C++ 충돌 처리
  • UE5 Issues : Additive Animation (animation sequence 색깔)
gbleem
gbleem
gbleem 님의 블로그 입니다.
  • gbleem
    gbleem 님의 블로그
    gbleem
  • 전체
    오늘
    어제
    • 분류 전체보기 (176)
      • Unreal Engine (66)
      • C++ (19)
      • 알고리즘(코딩테스트) (26)
      • TIL (60)
      • CS (4)
      • 툴 (1)
  • 블로그 메뉴

    • 홈
    • 카테고리
  • 링크

    • 과제용 깃허브
    • 깃허브
    • velog
  • 공지사항

  • 인기 글

  • 태그

    DP
    map을 vector로 복사
    템플릿
    BFS
    상속
    actor 클래스
    gamestate
    const
    싱글턴
    cin함수
    Vector
    addonscreendebugmessage
    motion matching
    C++
    character animation
    additive animation
    enhanced input system
    blend pose
    applydamage
    매크로 지정자
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gbleem
Unreal Engine - Data Table
상단으로

티스토리툴바