【问题标题】:Monogame content pipeline tool failing to compile XML data to XNBMonogame 内容管道工具无法将 XML 数据编译为 XNB
【发布时间】:2015-09-04 19:35:08
【问题描述】:

我是 Monogame 内容管道工具的新手,与 XNA 不同,XNA 会自行编译您需要的内容。所以我可能有一个非常简单的问题,我找不到解决方案。这是我的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:ns="Microsoft.Xna.Framework">
  <Asset Type="Game1.Screens.SplashScreen">
    <SplashScreen>
      <Path>Images/Image1</Path>
    </SplashScreen>
  </Asset>
</XnaContent>

所以我不完全确定 &lt;Asset Type="..."&gt; 想要什么作为值,但调试器告诉我那里有一个错误: Could not resolve type 'Game1.Screens.SplashScreen'.所以这是我正在看的一个简单的教程:

The Tutorial

该人决定教授如何使用 XML 序列化。所以他使用的是 XNA,但大部分代码也应该在 Monogame 上工作。无论如何,他所做的是,将一个新的 XML 文件添加到 Content.RootDiretory 之外的文件夹中,然后在其中添加他的 XML 文件。因为我还没有发布过 Monogame 的项目,所以如果我错了请纠正我,但是设置为 Copy always to output directory 的 XML 文件不会是用户可查看/可编辑的吗?还是会被压缩成XNB?或者它甚至不会在那里展示?这就是问题的根源,现在让我们看看顶部:

由于无法回答自己是否会在最终产品的 Content 目录中实际显示 XML 文件,因此我决定使用 Content pipeline 工具并从那里添加上述 XML 文件,因为我确信它会被转换为XNB。但现在我得到了这个错误。而且我不知道我错在哪里?如果我将文件的构建操作从默认的Build 设置为Copy,错误就会消失,但 XML 文件将位于我的 Content 目录而不是 XNB 目录中。请指教。

以下是有关 SplashScreen 类的更多信息: 它继承自另一个类GameScreen。 它位于项目文件夹内的Screens 文件夹内。这就是我尝试使用Game1.Screens.SplashScreen 的原因,其中Game1 是我的项目名称。

提前致谢!

【问题讨论】:

    标签: c# xml monogame


    【解决方案1】:

    你的直觉是正确的。教程的版本必须与 xml 文件一起发布游戏。但是 Xna 内容管道可以将其构建为二进制文件以发布您的游戏,运行时内容管道可以将其加载到您的游戏中。

    当它将数据加载到您的游戏中时,它需要知道数据将适合哪个类,以便将数据插入该类的实例中

    Class MyGameInitialConfiguration
    {
      public string path; 
      /*
       other possible game settings can be added too
       public float heroPower;
       public string badGuyName;
      */
    }
    

    //然后在xml文件中

    &lt;asset type=MyGameInitialConfiguration&gt;

    现在,由于构建过程在您点击运行时所做的第一件事是构建资产(将 fbx 转换为 xnb,将图像转换为 xnb,将您的 xml 转换为 xnb),因此需要知道之前的“MyGameInitialConfiguration”是什么你点击运行......但是如果你将这个类添加到游戏项目中,它不会在它需要它之前构建这个类,你会得到一个错误。

    因此,您实际上必须在解决方案中添加一个额外的项目来保存此类,并使您的游戏项目和内容项目依赖于它,因此它是第一个要构建的项目。然后在游戏项目运行时,它会知道“MyGameInitialConfiguration”是什么,并且可以将日期加载到其中。

    显然,您可以从游戏代码中访问该类实例并从中提取“路径”。

    XNA 知识到此结束:http://www.shawnhargreaves.com/blogindex.html

    特别是这个博客:http://blogs.msdn.com/b/shawnhar/archive/2009/03/25/automatic-xnb-serialization-in-xna-game-studio-3-1.aspx

    感谢您提出这个问题,让我回到了这么多年。 Xna 内容管道非常棒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 2011-09-25
      • 1970-01-01
      相关资源
      最近更新 更多