c# - 检查 Binary Formatter 的序列化是否已完成

标签 c# unity3d serialization save binaryformatter

是否可以检查二进制格式化程序的 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();

最佳答案

我们在我的公司所做的是,任何时候我们写入磁盘,我们写入一个临时位置,只有当完整操作完成时,我们才会执行文件移动/替换操作。

这是最安全、最简单的实现方式。如果用户退出而写入仍在进行中,则不会出现任何问题。

此外,如果在写入过程中出现任何异常,则不会损坏任何内容。

关于c# - 检查 Binary Formatter 的序列化是否已完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50732535/

相关文章:

c# - 我们可以使用 zxing.mobile 背靠背扫描多个条形码吗

c# - 我的 getkeydown 未被识别

c# - Unity C# 中的 2 Int 元组和包含方法

javascript - 序列化 Javascript 代码

json - 使用 Json4s 和自定义序列化器多态读取 JSON

c# - 将 svn 的输出读入字符串

c# - 如何将 targetname 与用户控件和触发器一起使用

c# - 如何序列化具有 Dictionary<string,object> 属性的对象?

c# - 使用 OpenGL 从 ffmpeg 帧渲染视频

Android - Tamagotchi 游戏后台服务