상황 1. 상점에서 아이템을 구매후 저장후 종료

상황 2. 다시 실행후 인벤토리 가보면 아이템이 잘 불러와짐.

상황 3. 같은종류의 아이템을 사면 수량이 더해져야 하는데 새로운 슬롯에 동일 아이템이 사짐.

상황 4. 게임시작시 불러와졌던 아이템을 사용하면 사용이 안되고 새로 산 아이템은 정상 사용됨.


궁굼증 ) 인벤토리 저장후 불러와진 아이템은 인스펙터상에서 모든게 새로산 아이템과 동일한데 왜 다른 아이템처럼 취급이 되는건지.

            그 불러와진 아이템은 존재만 하고 사용 기능등 완전 상실된 상태입니다 ㅠㅠ 미치겠네요 혹시몰라 스크립트 올려볼게요.

public void SaveData()
    {
        Data data = new Data();
        data._playerName = NameFlip.instance.playerNameText.text;
        data._feed = feed;
        data._money = coins;
        data._ext = exp;
        data._korLanguage = korLanguage;
        data._isBlueCap = isBlueCap;
        data._isPlaying = isPlaying;
        data._onPlayerNameMadePanel = onPlayerNameMadePanel;
       
        // 인벤토리 저장
        for (int i = 0; i < Inventory.instance.slots.Count; i++)
        {
            if (!Inventory.instance.slots[i].isEmpty)
            {
                data._item.Add(Inventory.instance.slots[i].item);
            }
        }

        // 퀵슬롯 저장
        for (int i = 0; i < AllQuickSlot.instance.quickSlots.Count; i++)
        {
            if (!AllQuickSlot.instance.quickSlots[i].isEmpty)
            {
                data._quickItem.Add(AllQuickSlot.instance.quickSlots[i].item);
            }
        }
       
        string saveData = JsonUtility.ToJson(data);
        File.WriteAllText(path, saveData);
    }

    public void LoadData()
    {
        string loadData = File.ReadAllText(path);
        Data data = JsonUtility.FromJson<Data>(loadData);
       
        NameFlip.instance.playerNameText.text = data._playerName;
        feed = data._feed;
        coins = data._money;
        exp = data._ext;
        korLanguage = data._korLanguage;
        isBlueCap = data._isBlueCap;
        isPlaying = data._isPlaying;
        onPlayerNameMadePanel = data._onPlayerNameMadePanel;

        for (int i = 0; i < Inventory.instance.slots.Count; i++)
        {
            if (i < data._item.Count)
            {
                Inventory.instance.GetItem(data._item[i], 0);
            }            
        }
       
        for (int i = 0; i < AllQuickSlot.instance.quickSlots.Count; i++)
        {  
            if (i < data._quickItem.Count)
            {
                AllQuickSlot.instance.SetItem(data._quickItem[i], 0);
            }
        }
    }

public class Inventory : MonoBehaviour
{
    public static Inventory instance;
    public List<InventorySlot> slots;

    public SellItemInfo sellItemInfo;
    public GameObject sellItemInfoPanel; // 판매 정보 패널
    public GameObject inputQuickSlotPanel; // 퀵슬롯 장착 패널
    public GameObject howManySell; // 몇개를 파시겠습니까 패널

    public PutSlot putSlot;

   

    private void Awake()
    {      
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            Destroy(gameObject);
        }

        for (int i = 0; i < slots.Count; i++)
        {          
            if (slots[i].isEmpty)
            {
                slots[i].gameObject.SetActive(false);
            }
        }  
    }  

    private void Update()
    {
        for (int i = 0; i < slots.Count; i++)
        {
            if (!slots[i].isEmpty && slots[i].item.itemCount == 0)
            {
                slots[i].ClearSlot();
                slots[i].gameObject.SetActive(false);
            }                      
        }    

        for (int i = 0; i < slots.Count-1; i++)
        {
            if (slots[i].isEmpty && i + 1 < slots.Count && !slots[i+1].isEmpty)
            {
                slots[i].gameObject.SetActive(true);
                slots[i].GetItem(slots[i+1].item, 0);              
                slots[i+1].ClearSlot();
                slots[i+1].gameObject.SetActive(false);
                return;                              
            }                      
        }  
    }
   
    public void GetItem(Item _item, int _count)
    {
        for (int i = 0; i < slots.Count; i++)
        {
            if (slots[i].isEmpty)
            {              
                slots[i].gameObject.SetActive(true);
                slots[i].GetItem(_item, _count);
                return;
            }
           
            if (!slots[i].isEmpty && slots[i].item == _item)
            {
                slots[i].item.itemCount += _count;
                return;
            }                
        }    
    }
   
    public void SellItem(Item _item, int _count)
    {
        for (int i = 0; i < slots.Count; i++)
        {
            if (_item == slots[i].item && _item.itemCount > 0)
            {
                slots[i].item.itemCount -= _count;              
           
                if (slots[i].item.itemCount == 0)
                {
                    slots[i].ClearSlot();

                    if (i + 1 < slots.Count && slots[i+1].isEmpty)
                    {
                        slots[i].gameObject.SetActive(false);
                    }
                }
                return;
            }
        }
    }
   
    public void OpenShopButton(GameObject _panel)
    {
        _panel.SetActive(true);
    }
   
    public void InventorySlotButton(int _index)
    {
        for (int i = 0; i < slots.Count; i++)
        {
            if (_index == i)
            {
                sellItemInfoPanel.SetActive(true);
                inputQuickSlotPanel.SetActive(true);
                howManySell.SetActive(true);
               
                if (slots[_index].item.itemType != Item.ItemType.USE)
                {
                    inputQuickSlotPanel.SetActive(false);
                    howManySell.SetActive(false);
                }
               
                if (slots[_index].item.itemType == Item.ItemType.EQUIP)
                {
                    sellItemInfo.equippedPanel.SetActive(true);
                    sellItemInfo.slotIndex = _index;
                }
                           
                sellItemInfo.GetItemInfo(slots[_index].item);
                putSlot.GetItem(slots[_index].item);
                return;
            }
        }      
    }        
}

a15714ab041eb360be3335625683746f01534528d6a7e289d63166f09d14cd6e3cb1d7d186a8d2c9e4e1952708