Godot의 Resource를 활용하여 아이템 데이터 구조를 구축하며, 이는 파일 시스템에서 생성 및 관리됩니다. 📁
모든 아이템의 기본 정보를 담는 ItemData 스크립트를 만들고, 이름, 설명, 아이콘, 최대 스택 크기, 장비 씬 등의 공통 속성을 정의합니다. 📜
ItemData를 상속받아 WeaponItemData, ShieldItemData, ConsumableItemData와 같은 특정 아이템 유형별 서브클래스를 생성하여 확장성을 높입니다. 🛡️
특히 ConsumableItemData는 health_gain과 같은 고유한 변수를 추가하여 기능적 차이를 둡니다. 🍎
열거형(enumerators) 대신 클래스 상속을 통해 아이템을 분류하는 방식을 채택하여, 더 엄격한 타입 검사와 오류 방지, 그리고 향후 확장성을 확보합니다. 🏷️
실제 아이템 리소스 파일(.tres)을 생성하고 인스펙터에서 각 아이템의 속성(예: 화살, 체력 물약, 검)을 설정하는 과정을 시연합니다. ⚙️
플레이어에게 부착될 Inventory 스크립트를 Node로 확장하여 인벤토리 시스템의 기반을 마련합니다. 🎒
인벤토리 슬롯을 표현하기 위해 item (ItemData)과 quantity (int) 변수를 포함하는 내부 클래스 ItemSlot을 정의합니다. 📦
인벤토리 변경 시 알림을 위한 updated_inventory 및 특정 슬롯 변경 시 updated_slot 시그널을 선언하여 UI 업데이트 등의 이벤트 처리를 용이하게 합니다. 🔔
인벤토리의 크기(size)와 시작 아이템(start_items)을 설정할 수 있는 내보내기 변수를 제공하여 유연성을 더합니다. 📏
아이템 추가(add_item), 제거(remove_item, remove_item_from_slot), 슬롯에서 아이템 가져오기(get_item_from_slot), 빈 슬롯 찾기(get_empty_item_slot) 등 핵심 인벤토리 관리 함수들의 구조를 설계합니다. ➕