无法将非默认字体导入monogame

问题描述 投票:1回答:2

我已经尝试了一段时间来导入字体(将其导入Monogame),该字体不是默认设置,并且它无法正常工作。我在Google上搜索了很多次,但没有找到答案。你们中的任何人都可能知道我在做什么吗?

c# fonts xna monogame
2个回答
1
投票

很难在Internet上找到有关此的信息,因为添加了Monogame Pipeline Tool(http://www.monogame.net/documentation/?page=Pipeline)后该过程已经改变。本文档适用于Monogame 3.4。

如何添加字体并在MonoGame 3.4中使用它:

  1. 获取要使用的字体(请检查许可证以确保可以使用它。)]]

  2. 将字体安装到您的操作系统中。

  3. 打开字体控制面板以验证字体的正确名称。提示:它不是文件名,也不一定是字体控制面板主页中字体的名称。

  4. a。右键单击字体并转到属性

    b。注意字体的“标题”:Font Title

    在屏幕快照中,字体为“ Plasmatica”,但字体的控制面板将其显示为“ Plasmatica Regular”。对于其余的部分,我将使用Plasmatica Italic,这在两个地方都相同。

  5. 在MonoGame管道工具中,创建一个“ .spritefont”文件:Add New Item

  6. a。选择“ SpriteFont描述”并为其命名。我建议使用类似“ FontName_FontStyle_FontSize”的示例,例如:PlasmaticaItalic12。

  7. 在文本编辑器中打开新的SpriteFont文件(在MonoGame Pipeline中双击它)。从“字体”控制面板中的字体属性中,将XML节点更改为相同的名称。 SpriteFont XML

  8. 保存并构建您的MonoGame管道项目。如果到目前为止一切正确,那么您应该在输出中看到这一点:

  9. c:/ [内容目录的路径] /Content/GUI/Fonts/PlasmaticaItalic12.spritefont

    建筑字体C:\ WINDOWS \ Fonts \ PlasmaNormalItalic.ttf

    使用DXT压缩

  10. 现在您的代码可以使用以下命令加载和使用字体:

  11. SpriteFont字体= Content.Load(“ Gui / Fonts / PlasmaticaItalic12”);

    spriteBatch.DrawString(font,“ Hello World!”,Vector2(0,0),Color.White);

    //其中Content是Game类的Content变量(类型:ContentManager)-主类的子类游戏类-在所有示例中为game1.cs。 spriteBatch就是SpriteBatch。

    P.S。如果遇到问题,请检查以确保管道工具的输出包含在您的项目中。我的被​​称为“ Content.mgcb”。自从我从Monogame的一个样本开始以来,就包括了我的。您可能应该将它“到位”到Visual Studio中-意味着不要“添加现有文件”,因为那样会产生副本。您需要一个实际的链接或包含文件的目录结构。修复文件的属性(在VS中),以将生成操作设置为“ MonoGameContentReference”。将“复制到输出目录”设置为“不复制”

祝你好运!到目前为止,我很喜欢Monogame,但正确设置所有零件有点复杂。


0
投票

我在3.7.1.189中遇到了相同的问题,并通过右键单击字体.otf文件并选择“为所有用户安装”来解决。您可能会收到UAC提示,单击“允许”或“是”。这个为我修复了MonoGame的管道工具,因此我可以使用自定义字体。

© www.soinside.com 2019 - 2024. All rights reserved.