
#pragma once
#include "CoreMinimal.h"
#include "ItemSpawnRow.generated.h"
USTRUCT(BlueprintType)
struct FItemSpawnRow : public FTableRowBase
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FName ItemName;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TSubclassOf<AActor> ItemClass;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float Spawnchance;
};
cpp파일은 만질 게 없다.
미리 정의한 ItemSpawnRow라는 구조체가 보인다. 이걸 그대로 만들어 주면 된다.
굉장히 친절하게 만들어뒀지만, 개인적으로 데이터 만지는 손맛은 좀 덜한 것 같다. 아마 방법은 있기야 하겠고 실제로는 그렇게 쓸 거라 생각하지만, Json이나 CSV로 받아서 사용하는게 손맛은 확실히 좋을 것 같다고 생각한다.
TArray<FItemSpawnRow*> AllRows;
static const FString ContextString(TEXT("ItemSpawnContext"));
ItemDataTable->GetAllRows(ContextString,AllRows);
그리고 코드상에서는 구조체 배열을 만들어 놓고, GetAllRows라는 함수를 통해 받아오는데, 첫번째 파라미터는 단순히 디버깅용 플래그로만 사용을 한다.