经常更新xml文件的最佳方法是什么?

本文关键字:最佳 方法 是什么 文件 xml 常更新 更新 | 更新日期: 2023-09-27 18:17:41

我制作了一款类似《我的世界》风格的小型3D偷窥游戏。在我的游戏中,你可以移除或添加一些立方体。因为,我总是需要更新/保存我的XML文件。所有的东西都保存在xml文件中。在我的xml文件中添加/删除节点的一切工作,但问题是关于性能!

每次我需要保存在xml文件中,程序需要睡眠1秒。这在我的游戏中真的很丑陋。每次玩家添加一个立方体意味着等待1秒保存到我的XML文件。

你有什么主意吗?

这是我保存xml文件的方式

示例(移除立方体后)

            XElement elementToRemove = elements
              .FirstOrDefault(
              x => (string)x.Attribute("min") == buildMin.ToString() &&
                    (string)x.Attribute("max") == buildMax.ToString());
            if(elementToRemove != null)
            {
                elementToRemove.Remove();
            }
            //Xdocument Class ~ call this function need 1 seconde
            XDocumentWorld.Save(AppDomain.CurrentDomain.BaseDirectory + @"World'world.xml");

经常更新xml文件的最佳方法是什么?

您不必在每次编辑后保存世界状态。在退出游戏或当一个块(即一个区域)将从内存中移除时保存数据。此外,你可以只存储玩家动作列表,而不是所有方块。要恢复,您可以使用相同的种子(假设世界是随机的)重新生成所有内容,然后重新执行这些操作。

老实说,您不应该每次更新都保存XML。这被归类为糟糕的代码,因此我不建议使用它。相反,您应该将信息保存在内存中,并在退出时写入。

但是,如果您坚持,理论上可以使用另一个线程,并安排代码每隔5秒写入XML文件,从而减少主线程的负载,同时仍然保持您所请求的功能。

如果你不确定如何使用线程,可以看看下面的链接:

http://www.albahari.com/threading/