csv 파일


언리얼에서 엑셀파일로 읽기 위해서는 csv확장자을 사용해야 한다. 확장자만 바꾸어 주면 됨

 

임포트를 하기 전에 게임데이터를 사용하기 위해서, 

GameInstance 를 먼저 만들려고 한다.

GameInstance 는 게임시작부터 종료까지 유지 되므로, 게임데이터 자료를 관리하는에 유용하다

종료까지 사용 게임리소스도 GameInstance가 가지고 있으면 편하다




먼저 GameInstance 클래스를 만들고,

그 다음 사용할 데이터 테이블 구조체를 만든다

구조체는 FTableRowBase를 상속한다


USTRUCT(BlueprintType)
struct FCharacterData : public FTableRowBase
{
	GENERATED_BODY();

public:
	FCharacterData() {};

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

	UPROPERTY(EditAnyWhere, BlueprintReadWrite, Category = "Data")
		float Speed;
};

 

그리고 컴파일을 한다음 csv 파일을 임포트 하면 아래 같은 창을 볼 수가 있다.

 

임포트시 화면

 

데이터 테이블 행 유형이 맞지 않으면, 임포트가 되도 NULL 이 나온다

정상적으로 되면 아래와 같이 데이터가 들어간 걸 볼 수가 있다.





임포트되고 실행한 화면


만든 GameInstace를 사용하기 위해서는 아래와 같이 프로젝트 설정이 필요하다

 



GameInstance에서 데이터 테이블로 부터 

숫자로 부터 자료를 얻을 수 있는 함수 구현

////h
{
	FCharacterData* GetCharacter(int32 number);

	UPROPERTY()
		UDataTable* CharacterTable;
}

////cpp
UKGameInstance::UKGameInstance()
{
	FString CharacterDataPath = TEXT("DataTable'/Game/_Data/CharacterData.CharacterData'");
	
	static ConstructorHelpers::FObjectFinder<UDataTable> DT_ABCHARACTER(*CharacterDataPath);	
	CharacterTable = DT_ABCHARACTER.Object;
}

FCharacterData* UKGameInstance::GetCharacter(int32 number)
{
	return CharacterTable->FindRow<FCharacterData>(*FString::FromInt(number), TEXT(""));
}

 

 


DataTable 정보를 가져오는 방법

 

1.   해당 숫자가 있는 열을 전달을 받는 방법

 

csv 파일

 

return CharacterTable->FindRow<FCharacterData>(*FString::FromInt(1), TEXT(""));

전달된 화면



2. 해당 텍스트가 있는 열 전달 받는 방법

csv 파일

	return CharacterTable->FindRow<FCharacterData>(FName("Player"), TEXT(""));

전달된 화면



이를 이용하여 SetStat()을 통해서 플레이어와 몬스터의 스탯 정보로 사용

'Unreal > Game 2 ' 카테고리의 다른 글

9.2 플레이어 HUD  (0) 2019.06.30
9.1 StatComponent  (0) 2019.06.30
8.3 Screen Center Aim Shooting  (0) 2019.06.25
8.2 Aim CrossHair  (0) 2019.06.24
8.1 AimOffSet 적용  (0) 2019.06.24

+ Recent posts