如何在C#XNA中将XML保存到已编译的XNB文件中?

时间:2016-06-19 18:13:04

标签: c# xml xna saving-data

总结一下,如何将数据写入我之前读过的.xnb XML文件?

我有以下内容:

项目内容文件夹中的可编辑XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<XnaContent>
  <Asset Type="TestProgram_Data.Data">
    <Number>123</Number>
  </Asset>
</XnaContent>

我的数据类:

namespace TestProgram_Data
{
    public class Data
    {
        public int Number;
    }
}

现在我可以从已编译的XML文件(.xnb,XNA内容文件)加载数据,如下所示:

Data data = new Data();
Console.WriteLine("Number: " + data.Number); // Output: "Number: 123"

但是如何写入此文件(内容文件夹下的.xnb文件)?

data.Number = 123456789; // Doesn't work

我尝试将XmlWriter与IntermediateSerializer一起使用,但它是一个普通的XML文件。我也可以用这个制作.xnb文件,但是在这种情况下.xnb文件没有编译(我可以用记事本编辑,不是我的项目的一部分,如果我再次运行我的程序,默认数据[例如.123]再次加载 - 因为我从我的.xnb文件中读取而不是从使用XmlWriter创建的其他文件中读取。

完全可以将数据保存回.xnb文件,从我以前读过的文件?

1 个答案:

答案 0 :(得分:1)

这是不可能的。 XNB是一种只读格式,专为快速运行时加载内容而设计。它仅在构建时由内容管道编写。您必须将修改后的数据写入不同格式的新文件中。

此外,IntermediateSerializer是内容管道的一部分,它仅包含在XNA开发工具中。它不包含在最终用户可再发行组件中。因此,您不应该使用它来创建新文件,而是使用其他一些序列化程序。