GameInstance를 상속받아 만든 ABGameInstance 클래스를 '맵&모드'에 설정
=> 게임이 시작될때 가장 먼저 실행되므로 데이터로드를 여기에서 하도록 한다.
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 |