代码之家  ›  专栏  ›  技术社区  ›  WonderfulWonder

检查二进制格式化程序的序列化是否已完成

  •  1
  • WonderfulWonder  · 技术社区  · 6 年前

    是否可以检查二进制格式化程序的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();
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Ilan Keshet    6 年前

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

    这是最安全和最简单的方法。如果用户退出并仍在进行写入,则不会出现任何中断。

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

    推荐文章