Item 클래스의 데이터를 정리한다고 했을 때,
어떤 아이템이 몇 %확률로 스폰되는지를 코드로 직접 하드 코딩하면 매번 수정할 때마다 빌드를 해줘야하는 번거로움이 있다.
언리얼 엔진의 데이터 테이블을 사용하면, 이를 엑셀(csv)나 JSON파일로 관리해서 엔진안으로 임포트하고, 코드나 블루프린트에서 쉽게 불러 쓸 수 있다.
만약 데이터의 수정이 필요하다면 기획자나 디자이너도 엑셀에서 숫자만 바꾸어, 엔진에서 reimport만 해주면 되어 편리하게 수정할 수 있다.
- struct는 class가 아니기에 부모 클래스를 선택할 수 없다.
- 따라서 None을 선택한다
#pragma once
#include "CoreMinimal.h"
class STRIKEZONE_API ItemSpawnRow
{
public:
DefaultRow();
~DefaultRow();
};
- 빈 클래스를 만들면 이와 같이 나오는데, 우린 구조체를 정의할 것이므로 생성자와 소멸자 모두 삭제
#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;
};
- 리플렉션 시스템에 등록해야되기 때문에, (구조체의 이름).generated.h를 추가
- USTRUCT(BlueprintType) 추가
- class를 struct로 변경하고, 구조체 이름 앞에 F를 붙인다.
- 언리얼 엔진은 FTableRowBase라는 기본 구조체를 제공하며 이를 상속한 구조체를 만들면, CSV 혹은 JSON 행을 해당 구조체에서 정해준 형태로 받아올 수 있게 된다.
'내배캠 > Unreal Engine' 카테고리의 다른 글
데이터 에셋과 데이터 테이블 (0) | 2025.01.28 |
---|---|
인터페이스 기반 아이템 클래스 구현_2_아이템 스폰 및 레벨 데이터 관리 (0) | 2025.01.27 |
DataTable 만들기(CSV, Unreal) (0) | 2025.01.27 |
인터페이스 기반 아이템 클래스 구현_1_인터페이스 설계 (0) | 2025.01.27 |
Delegate (0) | 2025.01.23 |