我正在研究像我的世界风格的小型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");
答案 0 :(得分:2)
老实说,您不应该在每次更新时都保存XML。这被归类为坏代码本身,因此我不建议使用它。相反,您应该将信息保存在内存中并在退出时写入。
但是,如果你坚持,理论上你可以使用另一个线程并安排代码写入XML文件,每隔5秒钟减少主线程的负载,并保持你要求的功能。
如果您不确定如何使用线程,请查看下面的链接:
答案 1 :(得分:2)
每次编辑后都不必保存世界状态。在退出游戏之前或当要从内存中移除块(即区域)时保存数据。此外,您只能存储播放器操作列表而不是所有块。要恢复使用相同种子重新生成所有内容(假设是随机世界),然后重做这些操作。