언리얼에서 엑셀파일로 읽기 위해서는 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. 해당 숫자가 있는 열을 전달을 받는 방법
return CharacterTable->FindRow<FCharacterData>(*FString::FromInt(1), TEXT(""));
2. 해당 텍스트가 있는 열 전달 받는 방법
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 |