7

我的代码是

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

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

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

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

4

5 回答 5

11

您是否已将内容添加到项目的 Content 文件夹并将 Build Action 设置为 Content(在属性窗口中)。

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

编辑:2015

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

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

安装 MonoGame.Extended 后,您可以像使用 BMFont 一样加载使用 BMFont 创建的字体,SpriteFont但使用BitmapFont类代替。

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

然后像这样渲染一些文本:

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

我的博客上有完整的教程

于 2013-01-25T01:07:15.127 回答
8

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

于 2013-01-31T09:56:10.977 回答
1

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

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

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

于 2013-01-25T22:46:38.713 回答
1

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

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

添加你的 spritefont 或纹理。

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

然后当你想简单地加载内容时;纹理 = content.Load("texture.png");

希望这可以帮助 :)

于 2015-07-05T11:23:04.973 回答
0

我遇到了类似的问题,但使用“Windows 8 Store”作为目标平台......而 Windows Open GL 版本一切正常。在 Windows 8 上,当我尝试 content.Load("Fonts/TestFont") 时收到“无法作为非内容文件加载”。

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

我想我要么错过了与 AppX 相关的项目首选项中的一些设置(大概 Windows 8 设备模拟器需要这个文件夹?)或者...... MonoGame 应该在不同的地方寻找 Content 文件夹......无论如何我会更新暂时手动保存 Content 文件夹,因为它在编译过程中被复制到错误的位置。

我的项目中有 Content 文件夹并且构建操作设置正确(Content)......并且选择了“始终复制”,但在构建(编译)期间,Content 文件夹被复制到 Debug 文件夹,而它应该被复制到 Debug\AppX文件夹,否则 MonoGame 找不到它。(我可能对确切的路径有误,因为我目前正在工作,问题出在我的家用电脑上)

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

希望这些信息有所帮助。

于 2013-02-06T07:56:38.057 回答