- Home /
Question by
$$anonymous$$ · Jul 09, 2015 at 07:23 PM ·
serializationsaveload
Serialization/Deserialization Problems
Hi, I am new to Unity and I have reached a point where I need to save some data in my game. What I want to do is to save the data in a .txt file using a Save class I made myself and then be able to read it and transfer it to an array of Saves.
Here is my Saving script which is working:
#pragma strict
import System.Collections.Generic;
import System.Runtime.Serialization.Formatters.Binary;
import System.Runtime.Serialization;
import System.IO;
public class Save {
var mode:int;
var range:int;
var max_combo: int;
var points:int;
}
var bf = new BinaryFormatter();
var cur_save: Save;
var saves:Save[]=new Save[10];
static var isOver:boolean;
static var isSaved:boolean;
private var f:FileStream;
function Start () {
f= FileStream("C:/Savegames/game1.txt",FileMode.Append,FileAccess.Write);
isOver=false;
isSaved=false;
saves=new Save[10];
f.Flush();
f.Close();
}
function GetSave(){
cur_save.mode=Play1_control.choosen_Op;
cur_save.range=Play1_control.choosen_Range;
cur_save.points=Game_control.Points;
}
function Update () {
GetSave();
var i:int;
var ms : MemoryStream;
if(isOver && !isSaved){
f= FileStream("C:/Savegames/game1.txt",FileMode.Append,FileAccess.Write);
ms=new MemoryStream();
saves[i]=new Save();
saves[i]=cur_save;
i++;
bf.Serialize(ms, cur_save);
ms.WriteTo(f);
f.Flush();
f.Close();
Debug.Log(saves[0].points);
isSaved=true;
}
}
And here is my Loading script which doesn't work:
#pragma strict
import System.Collections.Generic;
import System.Runtime.Serialization.Formatters.Binary;
import System.Runtime.Serialization;
import System.IO;
import System.Linq;
import System.Text;
var bf = new BinaryFormatter();
var isLoaded:boolean;
var s:String;
function Start () {
isLoaded=false;
s=File.ReadAllText("C:/Savegames/game1.txt");
Debug.Log(s);
}
function Update () {
var ms : MemoryStream= new MemoryStream();
var w : StreamWriter = new StreamWriter(ms);
w.Write(s);
w.Flush();
ms.Position = 0;
var saves:Save[]=bf.Deserialize(ms);
}
I am also getting an error with the loading script on line 25, it says :
SerializationException: Invalid binary format
Any help with the Loading script would be appreciated.
Comment