Saveing and Loading Problem
so i need to save a custom object and load it whenever and it gives me errors i have no idea how to fix. it gives me the error: IOException: Sharing violation on path C:\Users(-)\AppData\LocalLow\DefaultCompany\first 2d unity project\gamedata1.us /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/FileStream.cs 320
and error: SerializationException: Unexpected binary element: 255 /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectReader.cs 254
the code: script1:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
public class checkprog1 : MonoBehaviour {
public Text progdisp1;
public Text progdisp2;
public Text progdisp3;
private progress.savedata a;
private progress.savedata b;
private progress.savedata c;
// Use this for initialization
void Start () {
}
void progdisp(Text a, progress.savedata b)
{
if (b == null)
{
a.text = "No Save Present";
}
else
{
a.text = "Level " + b.farthestlvl().ToString();
}
}
// Update is called once per frame
void Update () {
a = utilities.sLoad("1");
b = utilities.sLoad("2");
c = utilities.sLoad("3");
progdisp(progdisp1, a);
progdisp(progdisp2, b);
progdisp(progdisp3, c);
}
}
script2:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System;
public class utilities : MonoBehaviour {
public static bool donelvls;
public static GameObject credits;
public static GameObject levelselect;
public static GameObject options;
public static GameObject quit;
public static GameObject secret;
public static GameObject selectselect;
public static GameObject save;
public static int bfrag;
public static string bas;
public static BinaryFormatter binf;
private void Awake()
{
Environment.SetEnvironmentVariable("MONO_REFLECTION_SERIALIZER", "yes");
}
public void Save(progress.savedata a, string b)
{
delete(b);
FileStream file = File.Create(Application.persistentDataPath + "/gamedata" + b + ".usd");
binf.Serialize(file, a);
file.Close();
}
public progress.savedata Load(string b)
{
if (File.Exists(Application.persistentDataPath + "/gamedata" + b + ".usd"))
{
FileStream file = File.Open(Application.persistentDataPath + "/gamedata" + b + ".usd", FileMode.Open);
progress.savedata c = (progress.savedata)binf.Deserialize(file);
file.Close();
return c;
}
else
{
return null;
}
}
public static progress.savedata sLoad(string b)
{
if (File.Exists(Application.persistentDataPath + "/gamedata" + b + ".usd"))
{
FileStream file = File.Open(Application.persistentDataPath + "/gamedata" + b + ".usd", FileMode.Open);
progress.savedata c = (progress.savedata)binf.Deserialize(file);
file.Close();
return c;
}
else
{
return null;
}
}
public void fullload(string b)
{
if(Load(b) != null)
{
progress.gamedata = Load(b);
}
else
{
progress.gamedata = new progress.savedata();
}
}
public void load1()
{
fullload("1");
}
public void load2()
{
fullload("2");
}
public void load3()
{
fullload("3");
}
public void save1()
{
Save(progress.gamedata, "1");
}
public void save2()
{
Save(progress.gamedata, "2");
}
public void save3()
{
Save(progress.gamedata, "3");
}
public void delete1()
{
delete("1");
}
public void delete2()
{
delete("2");
}
public void delete3()
{
delete("3");
}
public void delete(string b)
{
if (File.Exists(Application.persistentDataPath + "/gamedata" + b + ".usd"))
File.Delete(Application.persistentDataPath + "/gamedata" + b + ".usd");
}
script3:
using UnityEngine;
using System.Collections;
using System;
public class progress : MonoBehaviour
{
public static savedata gamedata;
// Use this for initialization
void Start()
{
gamedata = new savedata();
DontDestroyOnLoad(transform.gameObject);
}
// Update is called once per frame
void Update()
{
if (savedata.l1.b1 && savedata.l1.b2 && savedata.l1.b3)
{
savedata.l1.b4 = true;
}
else
{
savedata.l1.b4 = false;
}
if (savedata.l2.b1 && savedata.l2.b2 && savedata.l2.b3)
{
savedata.l2.b4 = true;
}
else
{
savedata.l2.b4 = false;
}
if (savedata.l3.b1 && savedata.l3.b2 && savedata.l3.b3)
{
savedata.l3.b4 = true;
}
else
{
savedata.l3.b4 = false;
}
if (savedata.l4.b1 && savedata.l4.b2 && savedata.l4.b3)
{
savedata.l4.b4 = true;
}
else
{
savedata.l4.b4 = false;
}
if (savedata.l5.b1 && savedata.l5.b2 && savedata.l5.b3)
{
savedata.l5.b4 = true;
}
else
{
savedata.l5.b4 = false;
}
if (savedata.l6.b1 && savedata.l6.b2 && savedata.l6.b3)
{
savedata.l6.b4 = true;
}
else
{
savedata.l6.b4 = false;
}
if (savedata.l7.b1 && savedata.l7.b2 && savedata.l7.b3)
{
savedata.l7.b4 = true;
}
else
{
savedata.l7.b4 = false;
}
if (savedata.l8.b1 && savedata.l8.b2 && savedata.l8.b3)
{
savedata.l8.b4 = true;
}
else
{
savedata.l8.b4 = false;
}
if (savedata.l9.b1 && savedata.l9.b2 && savedata.l9.b3)
{
savedata.l9.b4 = true;
}
else
{
savedata.l9.b4 = false;
}
if (savedata.l10.b1 && savedata.l10.b2 && savedata.l10.b3)
{
savedata.l10.b4 = true;
}
else
{
savedata.l10.b4 = false;
}
if (savedata.l11.b1 && savedata.l11.b2 && savedata.l11.b3)
{
savedata.l11.b4 = true;
}
else
{
savedata.l11.b4 = false;
}
if (savedata.l12.b1 && savedata.l12.b2 && savedata.l12.b3)
{
savedata.l12.b4 = true;
}
else
{
savedata.l12.b4 = false;
}
if (savedata.l13.b1 && savedata.l13.b2 && savedata.l13.b3)
{
savedata.l13.b4 = true;
}
else
{
savedata.l13.b4 = false;
}
if (savedata.l14.b1 && savedata.l14.b2 && savedata.l14.b3)
{
savedata.l14.b4 = true;
}
else
{
savedata.l14.b4 = false;
}
if (savedata.l15.b1 && savedata.l15.b2 && savedata.l15.b3)
{
savedata.l15.b4 = true;
}
else
{
savedata.l15.b4 = false;
}
if (savedata.l16.b1 && savedata.l16.b2 && savedata.l16.b3)
{
savedata.l16.b4 = true;
}
else
{
savedata.l16.b4 = false;
}
if (savedata.l17.b1 && savedata.l17.b2 && savedata.l17.b3)
{
savedata.l17.b4 = true;
}
else
{
savedata.l17.b4 = false;
}
if (savedata.l18.b1 && savedata.l18.b2 && savedata.l18.b3)
{
savedata.l18.b4 = true;
}
else
{
savedata.l18.b4 = false;
}
if (savedata.l19.b1 && savedata.l19.b2 && savedata.l19.b3)
{
savedata.l19.b4 = true;
}
else
{
savedata.l19.b4 = false;
}
if (savedata.l20.b1 && savedata.l20.b2 && savedata.l20.b3)
{
savedata.l20.b4 = true;
}
else
{
savedata.l20.b4 = false;
}
}
[Serializable]
public class savedata
{
public static class l1
{
public static bool completed, b1, b2, b3, b4;
}
public static class l2
{
public static bool completed, b1, b2, b3, b4;
}
public static class l3
{
public static bool completed, b1, b2, b3, b4;
}
public static class l4
{
public static bool completed, b1, b2, b3, b4;
}
public static class l5
{
public static bool completed, b1, b2, b3, b4;
}
public static class l6
{
public static bool completed, b1, b2, b3, b4;
}
public static class l7
{
public static bool completed, b1, b2, b3, b4;
}
public static class l8
{
public static bool completed, b1, b2, b3, b4;
}
public static class l9
{
public static bool completed, b1, b2, b3, b4;
}
public static class l10
{
public static bool completed, b1, b2, b3, b4;
}
public static class l11
{
public static bool completed, b1, b2, b3, b4;
}
public static class l12
{
public static bool completed, b1, b2, b3, b4;
}
public static class l13
{
public static bool completed, b1, b2, b3, b4;
}
public static class l14
{
public static bool completed, b1, b2, b3, b4;
}
public static class l15
{
public static bool completed, b1, b2, b3, b4;
}
public static class l16
{
public static bool completed, b1, b2, b3, b4;
}
public static class l17
{
public static bool completed, b1, b2, b3, b4;
}
public static class l18
{
public static bool completed, b1, b2, b3, b4;
}
public static class l19
{
public static bool completed, b1, b2, b3, b4;
}
public static class l20
{
public static bool completed, b1, b2, b3, b4;
}
public bool lvlsdone()
{
if (l1.completed && l2.completed && l3.completed && l4.completed && l5.completed && l6.completed && l7.completed && l8.completed && l9.completed && l10.completed && l11.completed && l12.completed && l13.completed && l14.completed && l15.completed && l16.completed && l17.completed && l18.completed && l19.completed && l20.completed)
{
return true;
}
else
{
return false;
}
}
public bool allboxes()
{
if (l1.b4 && l2.b4 && l3.b4 && l4.b4 && l5.b4 && l6.b4 && l7.b4 && l8.b4 && l9.b4 && l10.b4 && l11.b4 && l12.b4 && l13.b4 && l14.b4 && l15.b4 && l16.b4 && l17.b4 && l18.b4 && l19.b4 && l20.b4)
{
return true;
}
else
{
return false;
}
}
public bool alldone()
{
if (allboxes() && lvlsdone())
{
return true;
}
else
{
return false;
}
}
public int farthestlvl()
{
if (!l1.completed)
{
return 0;
}
else{
if (l2.completed)
{
if (l3.completed)
{
if (l4.completed)
{
if (l5.completed)
{
if (l6.completed)
{
if (l7.completed)
{
if (l8.completed)
{
if (l9.completed)
{
if (l10.completed)
{
if (l11.completed)
{
if (l12.completed)
{
if (l13.completed)
{
if (l14.completed)
{
if (l15.completed)
{
if (l16.completed)
{
if (l17.completed)
{
if (l18.completed)
{
if (l19.completed)
{
if (l20.completed)
{
return 20;
}
else
{
return 19;
}
}
else
{
return 18;
}
}
else
{
return 17;
}
}
else
{
return 16;
}
}
else
{
return 15;
}
}
else
{
return 14;
}
}
else
{
return 13;
}
}
else
{
return 12;
}
}
else
{
return 11;
}
}
else
{
return 10;
}
}
else
{
return 9;
}
}
else
{
return 8;
}
}
else
{
return 7;
}
}
else
{
return 6;
}
}
else
{
return 5;
}
}
else
{
return 4;
}
}
else
{
return 3;
}
}
else
{
return 2;
}
}
else
{
return 1;
}
}
}
}
}
i don't know what to do. please help!
Comment