2

我正在创建一个 XNA 游戏。我已经做到了,因此我可以在 XML 文件中指定所有关卡详细信息,然后将其反序列化并用于设置关卡详细信息。

目前,它只是引用我计算机上的一个文件 - 我的问题是,我如何更一般地引用它?

在我的内容文件夹中添加 xml 会引发大量关于架构等的投诉,这让我认为这可能不是正确的路线。

有什么建议么?

我尝试从 XNA 中删除所有条目,这给出了:

尝试访问该方法失败:System.IO.StreamReader..ctor(System.String)

编辑:

xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XnaContent>
  <Asset Type = "RDrop.Level[]">
  <Item>
    (stuff)
  </Item>
  <Item>
    (stuff)   
  </Item>
  </Asset>
</XnaContent>

编辑:

我已经开始了一个新的 Windows Phone 项目——前一个不是。我已经复制了所有内容并在本教程中添加了“dataTypes”:

http://msdn.microsoft.com/en-us/library/ff604979.aspx

游戏项目参考 -> 内容,MyDataTypes。内容参考 -> MyDataTypes。

XML 与之前的编辑一样,并通过 Add-> Existing Item-> Level.XML 包含在内容文件夹中。

有任何想法吗?

4

2 回答 2

2

您可以将构建操作保留为“编译”。一种方法来做你想做的事如下:

创建一个 xml 将要描述的类。示例:Level.cs

然后像这样构造你的xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XnaContent>
    <Asset Type="The_Level_class_namespace.Level">
        <Property1>Value</Property1>
        <Property2>Value</Property2>
        <Property3>Value</Property3>
        <Property4>Value</Property4>
    </Asset>
</XnaContent>

如果您希望 xml 描述一组对象,您可以像这样构造 xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XnaContent>
    <Asset Type="The_Level_class_namespace.Level[]">
        <Item>
            <Property1>Value</Property1>
            <Property2>Value</Property2>
            <Property3>Value</Property3>
            <Property4>Value</Property4>
        </Item>
    </Asset>
</XnaContent>

从那里你只需要确保你的值是正确的格式。例如 vector2 对象将是这样的:

<Vector2Property>x_value y_value</Vector2Property>

确保您的内容项目引用了游戏项目或库项目。

希望这可以帮助 :)

于 2012-09-18T21:21:14.933 回答
0

打开 XML 文档的属性(右键单击内容文件夹)。您可以将构建操作设置为:无。

这样,编译器不会分析您的模式,因此不会产生任何警告。

(我对此并不完全确定,只是我的第一个猜测)

于 2012-09-18T19:50:28.423 回答