본문 바로가기

Programming/UE4

CSV파일 데이터 로드

반응형

ABCharacterData.csv
0.00MB

GameInstance를 상속받아 만든 ABGameInstance 클래스를 '맵&모드'에 설정

=> 게임이 시작될때 가장 먼저 실행되므로 데이터로드를 여기에서 하도록 한다.

GameInstance 설정

ABCharacterData.csv파일을 첨부하였으며, 컨텐츠 브라우저에서 임포트하면 에셋으로 등록됩니다.

데이터 테이블 임포트창

 

 

ABGameInstance.h


#include "Engine/DataTable.h" // CSV파일을 읽는데 필요한 헤더파일
#include "Engine/GameInstance.h"
#include "ABGameInstance.generated.h"

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

 

// CSV파일의 가장앞 셀인 'Name'을 제외한 나머지 셀의 이름으로 변수이름을 설정한다.

(첫 셀은 언리얼에서 인덱스로 사용하며 이 값은 제외하고 가져온다. 셀 이름을 키값으로 사용해서 값을 가져옴)
public:
FABCharacterData() : Level(1), MaxHP(100.0f), Attack(10.0f), DropExp(10), NextExp(30) { }

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Data")
int32 Level;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Data")
float MaxHP;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Data")
float Attack;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Data")
int32 DropExp;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Data")
int NextExp;
};


/**
 * 
 */
UCLASS()
class TESTUMG_API UABGameInstance : public UGameInstance
{
GENERATED_BODY()

public:
UABGameInstance();

virtual void Init() override;
FABCharacterData* GetABCharacterData(int32 Level);

private:
UPROPERTY()
class UDataTable* ABCharacterTable;
};

 

//ABGameInstance.cpp

#include "ABGameInstance.h"

UABGameInstance::UABGameInstance()
{
FString CharacterDataPath = TEXT("/Game/GameData/ABCharacterData.ABCharacterData");
static ConstructorHelpers::FObjectFinder DT_ABCHARACTER(*CharacterDataPath);
ABCharacterTable = DT_ABCHARACTER.Object;
}

void UABGameInstance::Init()
{
Super::Init();

 

// 레벨 20의 DropExp를 출력
FString strLog = FString::Format(TEXT("DropExp of Level 20 ABCharacter : %d:{0} "), { GetABCharacterData(20)->DropExp });
UE_LOG(TestLOG, Log, TEXT("%s"), *strLog);
}

FABCharacterData * UABGameInstance::GetABCharacterData(int32 Level)
{
return ABCharacterTable->FindRow(*FString::FromInt(Level), TEXT(""));
}

반응형

'Programming > UE4' 카테고리의 다른 글

[UE4] 외적(CrossProduct)  (0) 2020.02.23
[UE4] 내적(DotProduct)  (0) 2020.02.16
[UE4]FString과 std::string간의 변환  (0) 2019.03.14
[UE4]UMG Slider를 이용한 ScrollBox 스크롤  (0) 2019.02.24
[UE4]Blueprint Log  (0) 2019.02.09