Save inventory items

So I’m working on a simple inventory system, that instantiates selected items as children of the slots GameObjects. And now I want to save those items, and all I can come up with is getting a list of the items names and saving them, as references to the items, then load them from the Resources one by one.
I was wondering if there is a better way to save and load the items.
Here is a glimpse of the inventory script:

				string dir = "Slot";
				slot [n] = GameObject.Find (dir+i).transform as RectTransform;
				if (slot [n].GetComponentInChildren<Equip> ()) {
					n++;
					if (n >= slot.Length) {
						picking = false;
						full = true;
					}
				}else if (!slot [n].GetComponentInChildren<Equip> ()) {

					ToEquip = true;
					ToPickUp = false;
						GameObject go = Instantiate (items, new Vector3 (0, 0, 0), slot [n].transform.rotation) as GameObject;
						go.transform.parent = slot [n];
						go.transform.localPosition = new Vector3 (0, 0, 0f);
					

						TextTarget = slot [n].GetComponentInChildren<Text> ();
						TextTarget.text = name;
						Destroy (gameObject);
						Debug.Log ("Item Added To inventory");
				}

Whenever I need to save objects such as list or any kind of collection I use [Serializable] tag on a class and save it with Binary Format.
Example:

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System;
using UnityEngine;

 public class SaveInventory
 {
	public List<Item> inventory = new List<Item>();
 
	//To save inventory to file. Use static for quick access
	private void save()
    {
        BinaryFormatter bf = new BinaryFormatter();
        FileStream file = File.Create(Application.persistentDataPath + "/Inventory.dat");
        Inventory toSaveInventory = new Inventory();

        toSaveInventory.inventory = this.inventory;

        bf.Serialize(file, inventory);
        file.Close();
    }

	//To load inventory from file. Use static modifier for quick access
    private void load()
    {
        if (File.Exists(Application.persistentDataPath + "/Inventory.dat"))
        {
            BinaryFormatter bf = new BinaryFormatter();
            FileStream file = File.Open(Application.persistentDataPath + "/Inventory.dat", FileMode.Open);
            Inventory InventoryLoaded = (Inventory)bf.Deserialize(file);
            file.Close();

            this.inventory = InventoryLoaded.inventory;
        }//if
        
    }//load function
		
	//To load inventory from file with returns. Use static modifier for quick access
    private List<Item> load()
    {
        if (File.Exists(Application.persistentDataPath + "/Inventory.dat"))
        {
            BinaryFormatter bf = new BinaryFormatter();
            FileStream file = File.Open(Application.persistentDataPath + "/Inventory.dat", FileMode.Open);
            Inventory InventoryLoaded = (Inventory)bf.Deserialize(file);
            file.Close();

            return InventoryLoaded.inventory;
        }//if
        return new List<Item>();
    }//load function
	
}//class
	
[Serializable]
class Inventory
{
	//save a list of *item* type. this can be string, int and all type of data, See List<T> documentations C# or (Java if it helps). 
	public List<Item> inventory;
}

Notes: Make sure your inventory to save has the same values of the saved one before saving it. I’ll leave you that as homework.

Regards.

I just finished writing a post on my blog that talks about serializing Item data and supports polymorphism. I recommend checking it out as a solution for your stuff as well. It also talks about the importance of separating data from the interface which will definitely help with serializing. Serialization with Json.NET in Unity 3D – GrayMatter Tutorials

Can i have your email?