1. Equipment Instance

image.png

UCLASS()
class LYRALIKE_API ULyraWeaponInstance : public ULyraEquipmentInstance
{
	GENERATED_BODY()

public:
	ULyraWeaponInstance(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Animation)
	FLyraAnimLayerSelectionSet EquippedAnimSet;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Animation)
	FLyraAnimLayerSelectionSet UnequippedAnimSet;
};
USTRUCT(BlueprintType)
struct FLyraAnimLayerSelectionEntry
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSubclassOf<UAnimInstance> Layer;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FGameplayTagContainer RequiredTags;
};

USTRUCT(BlueprintType)
struct FLyraAnimLayerSelectionSet
{
	GENERATED_BODY()

	// LyraAnimBodyStyleSelection의 MeshRule과 같이 AnimInstance의 Rule을 가진 LayerRules로 생각하면 됨
	// 태그를 통해 레이어를 가져옴
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<FLyraAnimLayerSelectionEntry> LayerRules;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSubclassOf<UAnimInstance> DefaultLayer;
};

image.png

image.png

image.png

image.png

image.png

image.png

UCLASS(BlueprintType, Blueprintable)
class LYRALIKE_API ULyraEquipmentInstance : public UObject
{
	GENERATED_BODY()

};

image.png

image.png

image.png

image.png

image.png

2. Inventory, QuickBar, Equipment Frame

1. Inventory 관련 파일 생성

image.png

/**
 * Fragment_EquippableItem: EquipmentItemDefinition을 가지며, 장착 가능한 아이템을 의미
 * Fragment_SetStats: 아이템에 대한 정보(Rifle에 대한 SetStats로 Ammo에 대한 장착 최대치 & 남은 잔탄 수 표시 등)
 */
UCLASS(Abstract, DefaultToInstanced, EditInlineNew)
class ULyraInventoryItemFragment : public UObject
{
	GENERATED_BODY()

public:
	
};

2. Inventory 관련 코드 작성