아이템 타입 별로 다른 인벤토리에 저장하기
아이템 타입 만들기
- ScriptableObject 클래스에 아이템 타입 만들기
아이템에는 재료 아이템과 장비할 수 있는 아이템으로 나뉜다
public enum ItemType
{
Material,
Equipment,
}
public ItemType itemType
- Scriptable 클래스를 상속하는 스크립트 작성
장비 아이템에 대한 클래스
장비 아이템은 4가지 타입이 있다
public enum EquipmentType
{
Weapon,
Armor,
Amulet,
Flask
}
[CreateAssetMenu(fileName = "New Item Data", menuName = "Data/Equipment")]
public class ItemData_Equipment : ItemData
{
public EquipmentType equipmentType;
}
- Equipment 타입의 아이뎀 데이터 생성
ItemData_Equipment는 아이템 중 Equipment 타입의 아이템을 관리하는 클래스이며 장비 아이템 중 어떤 타입을 가지는지 설정하는 클래스이다
타입에 따라 서로 다른 인벤토리에 저장하기
- Inventory는 Equipment 타입 아이템을 저장한다
- Stash는 Material 타입 아이템을 저장한다
- 재료 아이템을 저장하는 인벤토리 창(stash)에 대한 필드 생성과 초기화 작업
private void Start()
{
stash = new List<InventoryItem>();
stashDictionary = new Dictionary<ItemData, InventoryItem>();
stashItemSlot = stashSlotParent.GetComponentsInChildren<UI_ItemSlot>();
}
private void UpdatSlotUI()
{
for(int i = 0; i < stash.Count; i++)
{
stashItemSlot[i].UpdateSlot(stash[i]);
}
}
- 아이템 타입 별로 인벤토리 또는 스태시에 추가, 삭제 작업
public void AddItem(ItemData _item)
{
if (_item.itemType == ItemType.Equipment)
{
AddToInventory(_item);
}
else if(_item.itemType == ItemType.Material)
{
AddToStash(_item);
}
UpdatSlotUI();
}