불러오기
우선 .csv 파일을 준비한다.
빈 클래스가 생성 될텐데 싹 지워버린다.
.csv 파일을 연동시키기 위해선 데이터 테이블이 필요하다 FTableRowBase 로부터 상속받은 구조체를 하나 생성한다.
- #include "Engine/DataTable.h" 및 "파일명.generated.h" 추가
- USTRUCT(BlueprintType) 와 GENERATED_BODY() 메크로 필히 추가
#pragma once
#include "CoreMinimal.h"
#include "Engine/DataTable.h"
#include "Test.generated.h"
USTRUCT(BlueprintType)
struct FsTestData : public FTableRowBase
{
GENERATED_BODY()
UPROPERTY(BlueprintReadWrite, Category = TestData) FString Type = "";
};
우클릭 후 > Miscellaneous > Data Table을 클릭한다 그럼 아래와 같이 나타난다.
블루프린트 생성 방법은 아래와 같다. 우클릭 후 > Blueprints > Structure 통해 생성한 후 그걸로 데이터 테이블을 생성하면 된다.
생성한 후 구조체 안에 가진 데이터들 기반으로 데이터 테이블이 만들어진다.
생성 됐으면 아래와 같이 클릭한 후 .csv 파일을 연동시킨다.
근데 에러가 뜬다.
여기서 주목해야할 부분이 바로 Row Name이다, 이 부분은 설정할 수 있는 방법은 없고 프레임워크 내에 내장 되어있어서 기본으로 추가 되는걸로 알고있다. (블루프린트 예외)
아래와 같이 이름 없는 셀 하나 만들어준 후 변경하고 다시 불러오기.
읽어들이기 C++
// 클래스 내 선언
static TArray<FsTestData> ArrTestData;
// 외부 선언
TArray<FsTestData> 데이터테이블 매니저::ArrTestData;
// 아래는 static 함수
// CSV 로드
ConstructorHelpers::FObjectFinder<UDataTable> DATA_TABLE(TEXT("경로"));
if (!DATA_TABLE.Succeeded())
return;
UDataTable* pDataTable = DATA_TABLE.Object;
// 모든 이름 가져오기
TArray<FName> arrRowName = pDataTable->GetRowNames();
// 갖고온 CSV로부터 데이터 할당
for (int i = 0; i < arrRowName.Num(); i++)
{
// row_name_arr 안에 정보 및 명칭
auto p_row = pDataTable->FindRow<FsTestData>(arrRowName[i], arrRowName[i].ToString());
if (!p_row)
break;
// 구조체 변수로 역참조
FsTestData data = *p_row;
// 각 데이터들을 활용
ArrTestData.Add(data);
}
'게임엔진 > Unreal' 카테고리의 다른 글
[Unreal] 캐릭터 이동 관련 컴포넌트 (UCharacter / UPawn MovementComponent*) (0) | 2022.08.15 |
---|---|
[Unreal] C++ 인터페이스 (UInterface) (0) | 2022.08.14 |
[Unreal] 자료구조 순회 방법 (0) | 2022.08.04 |
[Unreal] FTimerManager 타이머 설정 (0) | 2022.08.02 |
[Unreal] 화면 정중앙 조준선 위치 기반 레이캐스트 (0) | 2022.08.01 |