public class Inventory : ScriptableObject, ISerializationCallbackReceiver

{

    public InventoryData itemList;

    public string savePath;

    private ItemDatabase dataBase;

    public int invenCnt;

    public bool full = false;


    private void OnEnable()

    {

#if UNITY_EDITOR

        dataBase = (ItemDatabase)AssetDatabase.LoadAssetAtPath

            ("Assets/Resources/Item Database.asset", typeof(ItemDatabase));

#else

        dataBase = Resources.Load<ItemDatabase>("Database");

#endif

    }


    private void Awake()

    {

        full = false;

        invenCnt = 1;

    }


    public void AddItem(Item _item, int _amount)

    {

        itemList.Items.Add(new inventorySlot(dataBase.GetId[_item] ,_item, _amount));

        full = itemList.Items.Count >= invenCnt;

    }


    public void Save()

    {

        string saveData = JsonUtility.ToJson(this, true);

        BinaryFormatter bf = new BinaryFormatter();

        FileStream file = File.Create(string.Concat(Application.persistentDataPath, savePath));

        bf.Serialize(file, saveData);

        file.Close();

    }


    public void Load()

    {

        if (File.Exists(string.Concat(Application.persistentDataPath, savePath)))

        {

            BinaryFormatter bf = new BinaryFormatter();

            FileStream file = File.Open(string.Concat(Application.persistentDataPath, savePath), 

                FileMode.Open);

            JsonUtility.FromJsonOverwrite(bf.Deserialize(file).ToString(), this);

            file.Close();

        }

    }

    [ContextMenu("Clear")]

    public void Clear()

    {

        itemList = new InventoryData();

        full = false;

    }


    public void OnAfterDeserialize()

    {

        for (int i = 0; i < itemList.Items.Count; i++)

        {

            itemList.Items[i].item = dataBase.GetItem[itemList.Items[i].Id];

        }

    }


    public void OnBeforeSerialize()

    {


    }

}


[System.Serializable]

public class InventoryData

{

    public List<inventorySlot> Items = new List<inventorySlot>();

}


[System.Serializable]

public class inventorySlot

{

    public int Id;

    public Item item;

    public int amount;

    public inventorySlot(int _id, Item _item, int _amount)

    {

        Id = _id;

        item = _item;

        amount = _amount;

    }

    public void AddAmount(int value)

    {

        amount += value;

    }

}


이게 인벤토리 코드고

 private void OnApplicationQuit()

    {

        inventory.itemList.Items.Clear();

        inventory.invenCnt = 1;

        inventory.full = false;

    }


이걸로 초기화 시킴