Я пытаюсь сохранить более старые данные, но кажется, что сохранение не работает или данные меняются после сериализации.
Я просмотрел каждый сценарий и поместил консольные сообщения в каждый, открывающий файл (из которых только 2), и ничто не открывает файл между тем, когда я сериализую его, и когда я открываю его и получаю разные данные .
Это код, который сериализует новую информацию
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream file = File.Open(Application.persistentDataPath + "/" + SceneManager.GetActiveScene().name + "Checkpoint.dat", FileMode.Open);
CheckpointData data = (CheckpointData)binaryFormatter.Deserialize(file);
data.Checkpoint = CheckpointNumber;
Player.CheckpointNumber = CheckpointNumber;
if (data.CheckpointUnlocked == CheckpointNumber - 1)
{
Player.CheckpointUnlocked = CheckpointNumber;
data.CheckpointUnlocked = CheckpointNumber;
}
binaryFormatter.Serialize(file, data);
file.Close();
Это то, что открывает файл после перезагрузки сцены после сериализации данных:
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream file = File.Open(Application.persistentDataPath + "/" + SceneManager.GetActiveScene().name + "Checkpoint.dat", FileMode.Open);
CheckpointData data = (CheckpointData)binaryFormatter.Deserialize(file);
CheckpointNumber = data.Checkpoint;
print(data.Checkpoint);
CheckpointUnlocked = data.CheckpointUnlocked;
print(data.CheckpointUnlocked);
file.Close();
Следует изменить целые числа контрольной точки и незаблокированной контрольной точки с 1 на 2, но они снова загружаются как 1 во втором разделе кода.