无法使用带有VS2012的Monogame加载内容

本文关键字:Monogame 加载 VS2012 | 更新日期: 2023-09-27 17:56:04

我的代码是

new GameFont(Content.Load<SpriteFont>("LoadingFont"), "LoadingFont")

根据我所读到的内容,您必须使用 VS2010 将您的资产编译为 .xnb 格式,我已经这样做了,并将它们放入 bin 目录中的 Content 子文件夹中,我也这样做了。但是,我收到一条错误消息,指出"无法加载加载字体资产!

我真的不知道还能做什么。我读过一篇非常古老的帖子,说使用 XNA 4 创建的资产不起作用,但我不知道这是否仍然正确,或者如何将我的 XNA 版本更改为 3.1。

有什么想法吗?也许有更好的方法根本不使用VS2010?

无法使用带有VS2012的Monogame加载内容

是否已将内容添加到项目的"内容"文件夹,并将"生成操作"设置为"内容"(在属性窗口中)。

我不确定使用 .xnb 格式的资产的过程是什么。我知道可以这样做,但我通常只是将原始图像和声音文件直接添加到我的内容文件夹中。不过,字体可能有点棘手。

编辑: 2015

自从这个问题写出来以来,很多事情都发生了变化。如今,MonoGame拥有自己的Pipeline工具,用于将内容处理成XNB文件。首先要尝试的是使用新管道处理SpriteFont。这样,您可以完全避免依赖XNA的需要。

或者,解决 MonoGame 中字体问题的另一种方法是使用 BMFont 工具将它们预渲染为纹理,并使用 MonoGame.Extended 在游戏中渲染它们。

一旦你安装了MonoGame.Extend,你可以加载用BMFont创建的字体,就像你加载SpriteFont一样,但使用BitmapFont类。

_bitmapFont = Content.Load<BitmapFont>("my-font");

然后呈现一些文本,如下所示:

 _spriteBatch.Begin();
 _spriteBatch.DrawString(_bitmapFont, "Hello World", new Vector2(100, 200), Color.Red);
 _spriteBatch.End();

我的博客上有完整的教程

我一直在VS2012中使用MonoGame,没有遇到任何问题; Content.Load<T>("myContent")仍然对我有用。最近让我感到困惑的一件事(提示:睡眠不足时不要编码)是您必须检查您的资产是否在解决方案资源管理器中设置为"复制到输出目录",否则当游戏构建时,资产不会随之而来,这就是您收到该错误的原因 - 它无法加载不存在的内容!右键单击您的资产,然后在"属性"下查看。如果它们设置为"不复制",则需要更改它。

就像@craftworkgames一样,我不能给你一个完整的答案。但是XNA 3.1附带的传统内容管道已经在4中消失了。因此,任何资产都需要以略有不同的方式加载。例如,要加载.png资产以显示精灵,我执行以下操作:

rock = Texture2D.FromStream(GraphicsDevice, TitleContainer.OpenStream(@"Rock-Large-Stones-PT.png"));

并将.png文件正常添加到解决方案中。我很确定字体会类似,但我还没有完全弄清楚;)

我遇到了同样的问题,不确定您是否解决了它,但这就是我所做的。

单击"内容"文件夹下的Monogame内容管道。

添加您的精灵字体或纹理。

确保在 Monogame 内容管道中将操作从"构建"更改为"复制"

然后,当您想简单地加载内容时;纹理 = 内容。加载("纹理.png");

希望这对:)有所帮助

我有类似的问题,但以"Windows 8 应用商店"作为目标平台......虽然Windows Open GL版本一切都很好。在 Windows 8 上,当我尝试内容时,我收到"无法加载为非内容文件"。加载("字体/测试字体").

我用 MonoGame.Windows8 项目替换了解决方案中的 MonoGame DLL(我从 CodePlex 下载了源代码),并做了一些调试......并发现 MonoGame 在垃圾箱中查找内容文件夹...''调试''AppX 文件夹...而在构建过程中,内容文件夹被复制到不同的位置。因此,当我手动将内容文件夹复制到 AppX 文件夹中时,错误已经消失,我的游戏原型现在可以正常工作。

我想我要么错过了与 AppX 相关的项目首选项中的一些设置(大概Windows 8 设备模拟器需要此文件夹?MonoGame应该在不同的地方查找内容文件夹...无论如何,我现在将手动更新内容文件夹,因为它在编译过程中被复制到错误的位置。

我的项目中有"内容"文件夹,并且生成操作设置正确(内容)...并选择"始终复制",但在构建(编译)期间,该内容文件夹将复制到调试文件夹,而应将其复制到调试''AppX 文件夹,否则 MonoGame 找不到它。(我可能错误的确切路径,因为我目前正在工作,问题出在我的家用 PC 上)

也许这只是我的Visual Studio 2012中的一些配置问题。

希望这些信息对您有所帮助。