Unity save system only works once.
Hello! I had enough of this problem and I can't seem to find a solution to it, so I need help.
I recently made a save system in my game, but no matter what I do, this always happens...
By the way, my shift keys are very lazy and always take breaks from working, so please excuse me for that.
anyways, whenever I play my game and stop playing it, then I go back to it, it will always load. However, whenever I go back to playing it for the second time, it always starts from the beginning and acts like nothing is saved. This is very frustrating. Here's the code to my save system:
using UnityEngine;
using System.Runtime.Serialization.Formatters.Binary;
using System;
using System.IO;
public static class SaveLoad {
public static void Save() {
BinaryFormatter bf = new BinaryFormatter();
if(!Directory.Exists(Application.persistentDataPath + "/saves")) {
Directory.CreateDirectory(Application.persistentDataPath + "/saves");
}
FileStream file = new FileStream(Application.persistentDataPath + "/saves/save.dat", FileMode.Create);
PlayerData data = new PlayerData();
bf.Serialize(file, data);
file.Close();
}
public static float[] Load() {
if(File.Exists(Application.persistentDataPath + "/saves/save.dat")) {
BinaryFormatter bf = new BinaryFormatter();
FileStream file = new FileStream(Application.persistentDataPath + "/saves/save.dat", FileMode.Open);
PlayerData data = bf.Deserialize(file) as PlayerData;
file.Close();
return data.stats;
}else {
float[] thing = new float[16];
thing[0] = 10.288f;
thing[1] = -0.6983222f;
thing[5] = 1f;
thing[6] = 1f;
thing[8] = 50f;
thing[10] = 418f;
thing[11] = -88.06059f;
thing[15] = 3f;
return thing;
}
}
public static void DeleteSave() {
if(CheckIfFileExists()) {
File.Delete(Application.persistentDataPath + "/saves/save.dat");
}
}
public static bool CheckIfFileExists() {
if (File.Exists(Application.persistentDataPath + "/saves/save.dat"))
return true;
else
return false;
}
}
[Serializable]
public class PlayerData {
public float[] stats;
public PlayerData() {
stats = new float[16];
stats[0] = VariableStore.spaceCraftX;
stats[1] = VariableStore.spaceCraftZ;
stats[2] = VariableStore.spaceRotX;
stats[3] = VariableStore.spaceRotY;
stats[4] = VariableStore.spaceRotZ;
stats[5] = VariableStore.health;
stats[6] = VariableStore.volume;
stats[7] = VariableStore.quality;
stats[8] = VariableStore.currency;
stats[9] = VariableStore.bounty;
stats[10] = VariableStore.malacticaX;
stats[11] = VariableStore.malacticaZ;
stats[12] = VariableStore.malacticaRotY;
stats[13] = VariableStore.sawStory;
stats[14] = VariableStore.currentHat;
stats[15] = VariableStore.currentSuit;
}
}
Please help!
Your answer
Follow this Question
Related Questions
How to read specific line with Streamreader in c#? 1 Answer
How do I recover my project? 0 Answers
how to save image in app IOS 0 Answers
PlayerPrefs saving and Loading 2 Answers
Save Transform and other Information into Binary File 0 Answers