save a list of a class

Hi i have a class used for my inventory which holds many types of variables

 public string itemName;
	public int itemID;
	public string itemDesc;
	public Sprite itemIcon;
	public GameObject itemModel;
	public ItemType itemType;
	public int itemValue;
	public int clipSize;
	public int currentAmmo;
	public AmmoType ammoType;
	public bool Stackable;

in my inventory i create a list of this

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

i would like to save this in a file (not playerprefs) so that i can then encrypt it and allow the users to move it and use it on other systems

Make Item class Serializable and write the list into a binary file.

FileStream fs = new FileStream("save.dat", FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, yourList);

If this file contains all save data, it will be pretty hard to read without knowing the exact order of saved data (a binary reader is needed to read this file).

And to load it back:

using (Stream stream = File.Open("save.dat", FileMode.Open))
            var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

            List<Item>  items = (List<Item>)bformatter.Deserialize(stream);

You may even like to consider using Runtime Serialization for Unity. Its similar to Binary Formatter in terms of usage but when its comes to functionality its much more power packed. It not only can serialize custom c# objects, but even supports serialization of Unity Objects like GameObject, MonoBehaviours, Textures, Prefabs etc. As a matter of fact, you can even use it for Scene Serialization. For more info about supported list, please check this 2.