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

Nib*_*Pig 7 c# monogame

我的代码是

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

根据我所读到的,您必须使用VS2010将您的资产编译为.xnb格式,我已经完成了,并将它们放入bin目录中的Content子文件夹,我也做过.但是,我收到错误消息"无法加载LoadingFont资产!".

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

有任何想法吗?也许没有使用VS2010会有更好的方法吗?

cra*_*mes 11

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

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

编辑:2015年

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

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

一旦你安装了MonoGame.Extended,就可以像使用BMFont一样加载创建的字体,而不是SpriteFont使用BitmapFont类.

_bitmapFont = Content.Load<BitmapFont>("my-font");
Run Code Online (Sandbox Code Playgroud)

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

 _spriteBatch.Begin();
 _spriteBatch.DrawString(_bitmapFont, "Hello World", new Vector2(100, 200), Color.Red);
 _spriteBatch.End();
Run Code Online (Sandbox Code Playgroud)

我的博客上完整的教程

  • 将文件本身的Build Copy属性设置为"Copy if Newer",为我工作. (4认同)

ana*_*der 8

我一直在VS2012中使用MonoGame而没有遇到麻烦; Content.Load<T>("myContent")仍然适合我.最近一直困扰我的一件事(提示:在睡眠不足时不编码)是你必须在解决方案资源管理器中检查你的资产是否设置为"复制到输出目录",否则当游戏构建时,资产不会与它一起使用,这就是你得到错误的原因 - 它无法加载那些不存在的东西!右键单击您的资产,然后在"属性"下查找.如果他们被设置为"不要复制",那么你会想要改变它.