是否可以检查二进制格式化程序的Serialize()是否已写入文件?我试图在Unity中创建一个保存/加载系统,并决定使用二进制格式化程序,但我不确定如何检查序列化是否完整。我不希望玩家在游戏仍在加载时退出游戏,理想情况下想要在保存(序列化)完成之前通知玩家,然后才能继续。
如果需要一些代码:
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream fileStream = new FileStream(Application.persistentDataPath + "/player.sav", FileMode.Create);
PlayerData playerData = new PlayerData(player);
binaryFormatter.Serialize(fileStream, playerData);
fileStream.Close();
答案 0 :(得分:3)
我们在公司工作的是,只要我们写入磁盘,就会写入临时位置,只有在完整操作完成后,我们才会执行文件移动/替换操作。
这是最安全,最简单的方法。如果用户退出并且写入仍在进行中,则不会有任何损坏。
此外,如果在写入过程中出现任何异常,则不会有任何损坏。