How to save Item from List in Unity

I’ve some problem with save Item from List<>.
So I’ve 3 script: Item script, Save script and PlayerData script.
Not for List I’ve not problem, but I don’t understand how to make it to List or serializable class.

public class ItemActivatedController : MonoBehaviour
{
    [System.Serializable]
    public class Items
    {
        public string name;
        public GameObject item;
        public bool active;
    }

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

    //some conditions
public static class SaveSystem 
{
    public static void SavePlayer(GameScript gameScript,PopUpShopScene popupScript)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        string path = Application.persistentDataPath + "/player.data";
        FileStream stream = new FileStream(path, FileMode.Create);

        PlayerData data = new PlayerData (gameScript, popupScript);

        formatter.Serialize(stream, data);
        stream.Close();
    }

    public static PlayerData LoadPlayer()
    {
        string path = Application.persistentDataPath + "/player.data";

        if (File.Exists(path))
        {
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream stream = new FileStream(path, FileMode.Open);

            PlayerData data = formatter.Deserialize(stream) as PlayerData;
            stream.Close();

            return data;
        }
        else
        {
            Debug.LogError("Save file not found in " + path);
            return null;
        }
    }
[System.Serializable]
public class PlayerData
{
    public double CoinsV;
    public double CrystalV;
    public DateTime TommorowDateV;
    public double UsedStepsV;
    public double NewStepsV;

    public PlayerData(GameScript gameScript, PopUpShopScene popupScript)
    {
        CoinsV = GameScript.Coins;
        TommorowDateV = GameScript.TomorrowDate;
        UsedStepsV = GameScript.UsedSteps;
        NewStepsV = GameScript.NewStepsValue;
        CrystalV = GameScript.Crystal;
        Debug.Log(CrystalV);
    }
}

How to save all Item params from List ItemTable to my PlayerData script?

Hey Sal1mus!

One suggestion is to make your items into ScriptableObjects, and then have your list store them. The reason that this is useful is that it makes it so you can 1) create new items very easily in the editor itself, and 2) be able to access the properties of the object stored in a single asset. Perhaps this isn’t exactly what you’re looking for, but ScriptableObjects are very handy at storing and transferring data about an object. Possibly, it will be easier for you to pass the ScriptableObjects into your PlayerData. Hope that helps to answer your question.