페이트 트리거를 모작하는 프로젝트이기 때문에, 기존 게임의 인벤토리 구조를 따라서 구현하고 있습니다.
<aside> 📂
ItemData / UPrimaryDataAsset
모든 아이템 공통 정보를 가지는 아이템 베이스 데이터 에셋
상속 받아 다양한 아이템으로 확장 가능 / 태그 사용 시 효과 ↑
UPrimaryDataAsset를 상속 받아, 비동기 로딩을 이용 → 메시, 머티리얼 등
코드 </aside>
<aside> ✨
ItemInstance / UObject
아이템이 실제로 게임에 생성되었을 경우, 생성된 아이템의 정보를 가질 객체
ItemData와 아이템의 개수 정보
데이터가 변동될 경우, 방송(현재는 델리게이트)
코드 </aside>
<aside> 🪖
ItemActor / AActor
아이템이 스폰될 수 있게, 트랜스폼과 외형을 가진 액터 클래스
현재 스폰, 드랍 상황만 가정하고 제작해 레벨에 직접 배치 X
현재, 프로토타입으로 오버랩 함수를 가지고 있음
오버랩된 액터가 인벤토리 컴포넌트를 가지고 있다면, 아이템 획득
→ 조건 변경 필수 / 나중에 플레이어 캐릭터 제작 후 변경
메시와 머티리얼을 아이템 데이터에서 가져와 비동기 로딩
현재, 피직스가 활성화되어 있지만, 일정 시간 또는 속도가 0이 되면 비활성화 로직 추가할 예정
코드 </aside>
<aside> 💼
InventoryComponent / UActorComponent
아이템을 담을 수 있는 인벤토리
플레이어 스테이트(or 캐릭터)에 부착
획득, 제거, 드랍 로직 구현 / 지금은 서버에서 실행되도록 했는데, 아마 제거될 수도 있음
코드 </aside>
<aside> 🖥️
InventoryWidget / UUserWidget
테스트를 위한 인벤토리 위젯
그리드패널을 이용
인벤토리의 한칸마다 개별 위젯
코드 </aside>
테스트 gif

잘 안보이지만, 스택 아이템은 스택이 가득 차면, 남는 만큼 새로운 칸에 추가되는 중입니다.

캐릭터(메시X)의 머리 위에 인벤토리에 있는 아이템을 스폰시켜, 다시 오버랩 시 획득하고 있습니다.