1
2
3
4
5
6
7
8
9
10
11
public class ItemData
{
    public Item item; // 획득한 아이템
    public int itemCount; // 획득한 아이템의 개수
 
    public void AddItem(Item _item, int _count = 1)
    {
        item = _item;
        itemCount = _count;
    }
}
cs



우선 ItemData 라는 클래스를 만들었음.


가상의 슬롯? 역할을 할거임. 아이템 클래스, 아이템 개수가 저장됨.

(아이템 클래스엔 아이템 이름, 종류 등등이 담겨있음)


AddItem 함수로 아이템을 할당할 수 있음.





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class InventoryManager : MonoBehaviour
{
    public ItemData[] itemData = new ItemData[12];
 
 
    // Start is called before the first frame update
    void Start()
    {
        for (int i = 0; i < itemData.Length; i++)
        {
            itemData[i] = new ItemData();
        }
 
        GetItem(Resources.Load<Item>("Items/itemTallow"), 4);
 
    }
 
    public void GetItem(Item _item, int _count = 1)
    {
        for (int i = 0; i < itemData.Length; i++)
        {
            if (itemData[i].item == null)
            {
                itemData[i].AddItem(_item, _count);
            }
        }
    }
}
 
cs


그리고 인벤토리 매니저


ItemData를 배열로 선언함. 크기는 일단 12개로 지정해줬음.

클래스를 배열로 선언하려면 for문 돌면서 new 선언 해줘야한대서 했음 (안하니까 null 포인터 에러나더라. 원리는 잘 모름. 구글링해서찾음)


GetItem 함수는 아직 미완인데 일단 비어있는 슬롯에 아이템 데이터를 담게끔 만들었어



이제 획득한 아이템 데이터가 가상의 공간에 담겨있으니까

이후 각종 인벤토리 UI에서 저 배열 찾아다가 그대로 쓰면 되겠지?