I am attempting to save and load and it was working. The only thing I changed was attempting to save array but after that i started getting error : SerializationException: serializationStream supports seeking, but its length is 0.
My Code:
using UnityEngine;
using System.Collections;
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
public class GameControl : MonoBehaviour {
public Click click;
public GoldPerSec gps;
public GameObject[] upgrades;
public GameObject[] items;
void OnApplicationQuit()
{
BinaryFormatter bf = new BinaryFormatter ();
FileStream file = File.Create (Application.persistentDataPath + "/playerInfo.dat");
PlayerData data = new PlayerData ();
data.gold = click.gold;
data.goldperclick = click.goldperclick;
data.clickmult = click.clickMult;
data.gemcount = click.gems;
data.gpsmult = gps.gpsMult;
for (int i = 0; i < upgrades.Length; i++) {
data.upgradesName _= upgrades*.GetComponent<UpgradeManager>().itemName;*_
data.upgradesCount = upgrades*.GetComponent ().count;*
data.upgradesCost = (int)upgrades*.GetComponent ().cost;*
}
for (int i = 0; i < items.Length; i++) {
data.managerName = items*.GetComponent().itemName;*
data.managerCount = items*.GetComponent ().count;*
data.managerCost = (int)items*.GetComponent ().cost;*
}
bf.Serialize (file, data);
file.Close ();
}
void Start()
{
if (File.Exists (Application.persistentDataPath + “/playerInfo.dat”)) {
BinaryFormatter bf = new BinaryFormatter ();
FileStream file = File.Open (Application.persistentDataPath + “/playerInfo.dat”, FileMode.Open);
PlayerData data = (PlayerData)bf.Deserialize (file);
file.Close ();
click.gold = data.gold;
click.goldperclick = data.goldperclick;
click.clickMult = data.clickmult;
click.gems = (int)data.gemcount;
gps.gpsMult = data.gpsmult;
for (int i = 0; i < upgrades.Length; i++) {
upgrades_.GetComponent().itemName = data.upgradesName*;
upgrades.GetComponent ().count = data.upgradesCount;
upgrades.GetComponent ().cost = data.upgradesCost;*_
}
for (int i = 0; i < items.Length; i++) {
items_.GetComponent().itemName = data.managerName*;
items.GetComponent ().count = data.managerCount;
items.GetComponent ().cost = data.managerCost;*_
}
}
}
}
[Serializable]
class PlayerData
{
public float gold;
public float goldperclick;
public float clickmult;
public float gemcount;
public float gpsmult;
public string[] upgradesName;
public int[] upgradesCost;
public int[] upgradesCount;
public string[] managerName;
public int[] managerCost;
public int[] managerCount;
}