Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向XNA项目添加XML文件_C#_Xna - Fatal编程技术网

C# 向XNA项目添加XML文件

C# 向XNA项目添加XML文件,c#,xna,C#,Xna,我正在制作一个XNA游戏。我这样做是为了在XML文件中指定所有级别详细信息,然后反序列化并用于设置级别详细信息 目前,它只是引用我计算机上的一个文件-我的问题是,如何更一般地引用它 在我的内容文件夹中添加xml引起了很多关于模式之类的抱怨,这让我觉得这可能不是正确的途径 有什么建议吗 我尝试从XNA中删除所有条目,这将提供: 尝试访问方法失败:System.IO.StreamReader..ctor(System.String) 编辑: xml: <?xml version="1.0" e

我正在制作一个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>

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

XML与上一次编辑相同,通过Add->Existing Item->Level.XML包含在内容文件夹中


有什么想法吗?

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

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


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

您可以将构建操作保留为“编译”。执行所需操作的一种方法如下:

创建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 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>
<Vector2Property>x_value y_value</Vector2Property>

价值
价值
价值
价值
如果希望xml描述一组对象,可以这样构造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 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>
<Vector2Property>x_value y_value</Vector2Property>

价值
价值
价值
价值
从这里开始,您只需要确保您的值的格式正确。例如,vector2对象如下所示:

<?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 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>
<Vector2Property>x_value y_value</Vector2Property>
x_值y_值
确保内容项目引用游戏项目或库项目


希望这有帮助:)

Hrm,这似乎有将其添加到项目中的效果,但无法使用(因为它没有被放入构建文件夹中)。如果我像这样添加它-当我在手机上部署它时,这会是一个问题吗。。。?我觉得应该有一个不同的方法,但我可能会说'疯狂。设置复制选项为“复制如果更新”或“复制总是”。那会解决你的问题。我不知道Windows Phone的文件系统是否与Windows相同,因为我从未在这个平台上开发过。嗨,罗伯特,谢谢你的回答。我不太确定我是否明白;我已经得到了类和描述它的XML。我可以将它反序列化到一个类中(我是,这很好,我的所有级别都在加载),所以这不是一个问题。这是最后一步,可以让它在我的内容文件夹,我挣扎。我应该在我的类中得到的XML中添加哪一位来让它工作呢?废话,我是个笨蛋。它无法识别名称空间,但我会继续玩。它找不到它应该从中获取此信息的类-尝试设置对我的游戏项目的引用会导致它抱怨它会创建循环引用(因为项目引用它的内容有点合理!)您应该向解决方案中添加一个新项目,以保存游戏使用的类库。如果这是一个windows phone游戏,make是一个“windows phone游戏库”项目。将level类放在该项目中。然后有内容项目参考库项目、游戏项目参考库项目和游戏项目参考内容项目。然后,库项目不引用任何一个项目。这将消除循环引用问题你看过这个吗?我想你可以在重读几遍后得到更多关于这个问题的答案,我没有看到任何特定于XNA/游戏的东西。这只是一个关于对某些XML进行反序列化的问题。@Kev这是
XnaContent
-它应该由XNA内容管道的
XmlImporter
内置到二进制数据中。(根据罗伯特的回答)乔舒亚,你想让我把这个迁移到我们的游戏开发网站上吗,你可能会对这个问题有更好的了解?罗伯特在这里似乎走对了路——尽管我似乎已经打开了一罐蠕虫试图把这个角穿进去。