05
16

아이템의 데이터 테이블을 만들어야해서, 아이템 구조체를 C++로 제작하였다.

 

아이템 데이터 테이블의 내용을 어떻게 구상하면 될까 고민을 좀 많이 하게 되었다. 아이템 구조체 C++을 작성하면서, 어떤 정보를 넣어야되는지 어떤 정보는 넣지 말아야될지에 대해 고민을 많이 했다.

 

약간 기획자가 엑셀에서 데이터를 넣는 느낌을 생각해서 내용을 작성해보았다. 작업하면서, 추후에 추가해야된다면 추가하는 방식으로 진행해야될거 같다.

 

한번에 코드를 전부 완성하는건 아직 어려운거 같다.

 

 

작성한 코드

더보기

#pragma once

#include "CoreMinimal.h"
#include "Engine/DataTable.h"
#include "NS_ItemDataStruct.generated.h"

UENUM()
enum class EItemType : uint8
{
Misc UMETA(DisplayName = "기타"),
Consumable UMETA(DisplayName = "소모품"),
Medical UMETA(DisplayName = "치료품"),
Equipment UMETA(DisplayName = "장비"),
Material UMETA(DisplayName = "제작재료"),
Utility UMETA(DisplayName = "도구"),
EndingTrigger UMETA(DisplayName = "엔딩조건")
};

UENUM()
enum class EWeaponType : uint8
{
None,
Melee,
Ranged,
Ammo
};

USTRUCT()
struct FItemTextData
{
GENERATED_USTRUCT_BODY()

UPROPERTY(EditAnywhere)
FText ItemName;

UPROPERTY(EditAnywhere)
FText ItemDescription;

UPROPERTY(EditAnywhere)
FText InteractionText;
};

USTRUCT()
struct FItemStates
{
GENERATED_USTRUCT_BODY()

UPROPERTY(EditAnywhere)
int32 HealAmount;

UPROPERTY(EditAnywhere)
int32 StaminaRecovery;

UPROPERTY(EditAnywhere)
int32 HungerRestore;

UPROPERTY(EditAnywhere)
int32 ThirstRestore;

UPROPERTY(EditAnywhere)
int32 TiredRestore;
};

USTRUCT()
struct FItemFlags
{
GENERATED_USTRUCT_BODY()

UPROPERTY(EditAnywhere)
bool isbleed;

UPROPERTY(EditAnywhere)
bool isbroken;

UPROPERTY(EditAnywhere)
bool isstomachache;
};

USTRUCT()
struct FItemNumericData
{
GENERATED_USTRUCT_BODY()

UPROPERTY(EditAnywhere)
float Weight;

UPROPERTY(EditAnywhere)
int32 MaxStack;

UPROPERTY(EditAnywhere)
bool isStackable;
};

USTRUCT()
struct FItemAssetData
{
GENERATED_USTRUCT_BODY()

UPROPERTY(EditAnywhere)
UTexture2D* Icon;

UPROPERTY(EditAnywhere)
UStaticMesh* StaticMesh;

UPROPERTY(EditAnywhere)
USkeletalMesh* SkeletalMesh;

UPROPERTY(EditAnywhere)
USoundBase* UseSound = nullptr;
};

USTRUCT()
struct FWeaponData
{
GENERATED_USTRUCT_BODY()

UPROPERTY(EditAnywhere)
int32 Damage;

UPROPERTY(EditAnywhere)
float Durability;

UPROPERTY(EditAnywhere)
int32 MaxAmmo;
};


USTRUCT(BlueprintType)
struct FNS_ItemDataStruct : public FTableRowBase
{
public:
GENERATED_USTRUCT_BODY()

//있어야 될 데이터
UPROPERTY(EditAnywhere)
EItemType ItemType;

UPROPERTY(EditAnywhere)
EWeaponType WeaponType;

UPROPERTY(EditAnywhere)
FItemTextData ItemTextData;

UPROPERTY(EditAnywhere)
FWeaponData WeaponData;

UPROPERTY(EditAnywhere)
FItemStates ItemStates;

UPROPERTY(EditAnywhere)
FItemFlags ItemFlags;

UPROPERTY(EditAnywhere)
FItemNumericData ItemNumericData;

UPROPERTY(EditAnywhere)
FItemAssetData ItemAssetData;

//상한 음식 체크
UPROPERTY(EditAnywhere)
bool isSpoiledfood;
};

 

 

'언리얼 > No_Signal 개발일기' 카테고리의 다른 글

001. 베이스 코드 작성  (0) 2025.05.23
COMMENT