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

时间:2014-08-11 14:54:21

标签: c# xml xna xmlnode

我正在研究像我的世界风格的小型3D voyel游戏。 在我的游戏中你可以删除并添加一些立方体。 因此我总是需要更新/保存我的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");

2 个答案:

答案 0 :(得分:2)

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

但是,如果你坚持,理论上你可以使用另一个线程并安排代码写入XML文件,每隔5秒钟减少主线程的负载,并保持你要求的功能。

如果您不确定如何使用线程,请查看下面的链接:

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

答案 1 :(得分:2)

每次编辑后都不必保存世界状态。在退出游戏之前或当要从内存中移除块(即区域)时保存数据。此外,您只能存储播放器操作列表而不是所有块。要恢复使用相同种子重新生成所有内容(假设是随机世界),然后重做这些操作。