본문 바로가기
UnrealEngine

[UE4] DataTable in c++

by 공작사 2022. 12. 18.

순수하게 c++코드로 사용하는 방법. FTableRowBase를 상속받는 구조체 생성. 해당 구조체에는 함수를 (아마도)생성할 수 없다.(생성자 제외)

 

FCustomDataTable.h (.cpp필요 없음)

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Engine/DataTable.h"
#include "CustomDataTable.generated.h"

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

public:
	FCustomDataTable() : MainText(""), SubText(""), Time(0.0f) {}

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Data")
		FString MainText;
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Data")
		FString SubText;
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Data")
		float Time;
};

 

(DataTable을 사용하고 싶은 곳의).cpp

#include "CustomDataTable.h"

	FString file;
	FString path = FString(TEXT("C:/Users/user/Desktop/new.csv"));
	FFileHelper::LoadFileToString(file, *path);

	UDataTable* ad = NewObject<UDataTable>();
	ad->RowStruct = FCustomDataTable::StaticStruct(); // ※이부분이 필수.

	//GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Black, file);
	auto a = ad->CreateTableFromCSVString(file);//에러 항목 리턴

	GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Purple, ad->GetTableAsString());

※해당 부분이 아래 사진의 행 타입을 선택하는 부분.

댓글