3

我已经尝试了一段时间,我相信我做的一切都是正确的(就代码而言):

SpriteFont font = Content.Load<SpriteFont>("Arial");

但是,然后我读到您需要使用我尝试过的工具编译字体,但它们都从扩展名 *.spritefont 转换而来。这似乎不在我的机器上,尽管经过一些研究,我确实设法获得了几个 TTF 文件。

一些进一步的研究表明,如果我从 VS 中选择“新文件”,我应该能够选择创建一个新的 spritefont。情况似乎并非如此,因为它不在 VS2012 或 13 的列表中。

我没有理由经常使用字体,所以我可能犯了一个明显的错误。有什么想法吗?

4

3 回答 3

10

好的,以下是您需要了解的内容的简要说明:

  1. 你可能已经找到了关于如何在 XNA 中使用 sprite 字体的教程
  2. 您似乎缺少的是XNA Game Studio,一旦您安装了它,您就可以在 Visual Studio 中选择选项。
  3. 请注意,您实际上追求的是“内容项目”。这将用于创建 spritefont 文件并将它们编译成 XNB 文件以在 MonoGame 中使用。您还需要使用“假”XNA 游戏项目来执行此操作。
  4. 编译完 XNB 文件后,您需要将它们添加到 MonoGame 项目的 Content 文件夹,并在属性窗口中将它们设置为 Content / Copy(如果较新)。

之后,您的代码应该可以工作。这是一个具有上述最低要求的示例项目: https ://dl.dropboxusercontent.com/u/82020056/MonoGameSpriteFonts.zip

或者,还有一个选项可以完全跳过 XNA Content 项目并使用 MonoGame 和原始资产文件。这就是我在游戏中的做法,您可以在我的博客上找到教程

编辑:我认为这很重要,可以包含在答案中;MonoGame 团队目前正在研究一种解决方案,以便不需要 XNA Game Studio。看起来字体已经被覆盖了。

https://github.com/mono/MonoGame/wiki/Content-Build-Pipeline

XNA 4.0 的内容构建管道的一个端口目前正在开发中。这将允许将资产编译为 MonoGame 支持的所有平台的优化二进制格式,而无需在 Windows PC 上安装 XNA Game Studio 4.0。资产编译将在项目构建时完成,并且在 Visual Studio(2010 和 2012)和 MonoDevelop(Windows、Mac OS X 和 Linux)中均受支持。

于 2013-08-16T10:37:04.167 回答
4

如果您只想绘制 spritefont,则不需要 VS2010 或 XNA studio。

首先手动创建一个 .spritefont xml。您可以在此处使用示例:http: //msdn.microsoft.com/en-us/library/bb447759.aspx

然后使用 XNA 内容编译器将其编译为 .xnb:http: //xnacontentcompiler.codeplex.com/

这是一个很好的教程: http ://www.youtube.com/watch?v=BwtQn02oy6A 但请注意,您不需要 XNA 工作室。手动编辑 .spritefont xml 非常容易。

不要忘记设置内容目录:Content.RootDirectory = "Content"; 并且 .xnb 属性应设置为“内容”和“始终复制”。(至少这对于我的 Windows 8 MonoGame 项目是必需的)

于 2013-11-19T08:48:53.243 回答
0

我认为您不再需要 XNA。

只需双击 Content.mgcb 即可打开内容编辑器。

右击 Content -> Add -> New item -> Spritefont description,给它一个名字,例如“testfont”

在游戏中加载你的 spritefont:

var font = Content.Load<SpriteFont>("testfont");

用它!

spriteBatch.DrawString(font, "hello", new Vector2(10, 10), Color.AliceBlue);
于 2015-05-10T15:19:13.290 回答