【问题标题】:Loading data from XML file into XNA 4.0将 XML 文件中的数据加载到 XNA 4.0
【发布时间】:2013-01-21 23:48:19
【问题描述】:

这是我这几天一直在解决的问题。我设法制作了一个包含 2 个类的游戏库 - 一个包含我想要更改的变量的名称和类型,另一个用于写入 XML 文件(序列化)。 这是我的序列化类:

namespace Postavke
{
    public class TempMain
    {
        public static void Main()
        {
            object TestValue = new PostavkeStanice();
            XmlWriterSettings XMLPostavke = new XmlWriterSettings();
            XMLPostavke.Indent = true;

            using (XmlWriter pisac = XmlWriter.Create("Postavke.xml", XMLPostavke))
            {
                IntermediateSerializer.Serialize(pisac, TestValue, null);
            }
        }
    }
}

我要序列化的类(“PostavkeStanica”)只有一个bool 变量,所以XML 文件非常非常简单。 当我想将数据从 XML 加载到我的 XNA 4.0 程序中时,就会出现问题。我使用ContentManager,但是当我尝试使用应该由此设置其值的变量时,我收到错误

"There was an error while deserializing intermediate XML. Cannot find type Postavke.PostavkeStanice"."

在声明区域中:

ContentManager upraviteljSadrzaja;
PostavkeStanice radnaStanica1;

在 LoadContent 方法中:

radnaStanica1 = upraviteljSadrzaja.Load<PostavkeStanice>(@"Teksture/Postavke");

“PostavkeStanica”类只有一个名为“Stanje”的bool 变量,我想用它来确定某个对象是启用还是禁用,例如:

if (position == stanica1 && radnaStanica1.Stanje)
            {

                kontrola = false;
            }

这段代码确定一个可移动的对象是否在 radnaStancia1 对象的前面(它不会改变它的位置),当条件为真时它会停止移动。 我正在尝试使用 XML 文件来设置这个变量的值,因为我希望能够在不重建整个解决方案的情况下更改该变量的值。

请指教,谢谢。

【问题讨论】:

    标签: c# xml xna xna-4.0


    【解决方案1】:

    有时当反序列化器找不到类型时,要么是因为未引用游戏库,要么是在编译器试图理解 content.load 语句的编译期间,游戏库保存它试图查找的类型尚未构建。

    确保将主游戏项目的依赖项设置为依赖于库并引用它。当游戏库被设置为依赖时,编译器知道先构建它。

    【讨论】:

    • 是的,我这样做了,但它仍然给我同样的错误。这是让我感到困惑的部分:从逻辑上讲,我只需要序列化一次 - 创建与我的“PostavkeStanice”类对应的 XML 文件,之后我什至可以删除它。我通过选择我的游戏库的输出类型到控制台应用程序,并通过调试->启动新实例来创建 XML 文件。现在我有了我需要的 XML 文件 - 我必须将它粘贴到 Content 文件夹中,还是什么?
    • 不行,只要路径有效,内容管理器就能找到。我不确定解决方案是什么。它在 xml 中是否有“XnaContent”标签?以及带有“Type=PostavkeStanice”属性的“资产”标签?
    • &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;XnaContent&gt; &lt;Asset Type="Postavke.PostavkeStanice"&gt; &lt;radnaStanica1_Stanje&gt;false&lt;/radnaStanica1_Stanje&gt; &lt;radnaStanica2_Stanje&gt;false&lt;/radnaStanica2_Stanje&gt; &lt;radnaStanica3_Stanje&gt;false&lt;/radnaStanica3_Stanje&gt; &lt;kraj_Stanje&gt;false&lt;/kraj_Stanje&gt; &lt;/Asset&gt; &lt;/XnaContent&gt; 这是创建的完整 xml 文件。 “radnaStanica_stanje”表示“workstation_State”,“kraj”表示“结束”,“Postavke.PostavkeStanice”表示“Settings.WorkstationSettings”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2020-10-30
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多