Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在VS2012/13中使用monogame加载字体_.net_Visual Studio 2012_Fonts_Xna_Monogame - Fatal编程技术网

.net 在VS2012/13中使用monogame加载字体

.net 在VS2012/13中使用monogame加载字体,.net,visual-studio-2012,fonts,xna,monogame,.net,Visual Studio 2012,Fonts,Xna,Monogame,我已经尝试了一段时间,我相信我做的每件事都是正确的(就代码而言): SpriteFont=Content.Load(“Arial”); 然而,我后来读到,您需要使用工具编译字体,我尝试过,但它们都是从扩展名*.spritefont转换而来的。这似乎不在我的机器上,尽管经过一些研究,我确实设法获得了一些TTF文件 一些进一步的研究表明,如果我从VS中选择“新文件”,我应该能够选择创建一个新的spritefont。情况似乎并非如此,因为VS2012或VS13都不在列表中 我没有理由经常使用字体,所

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

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

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


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

好的,下面是你需要知道的内容:

  • 你可能已经找到了
  • 您似乎缺少的是,一旦安装,就可以在VisualStudio中选择选项
  • 请注意,您实际上想要的是一个“内容项目”。这将用于创建spritefont文件,并将其编译为XNB文件,以便在MonoGame中使用。您还需要使用一个“假的”XNA游戏项目来实现这一点
  • 编译完XNB文件后,需要将其添加到MonoGame项目内容文件夹中,并在“属性”窗口中将其设置为“内容/复制”(如果较新)
  • 在此之后,您的代码应该可以工作。下面是一个具有上述最低要求的示例项目:

    另外,还可以选择完全跳过XNA内容项目,并将MonoGame与原始资产文件一起使用。这就是我在游戏中的表现,你可以发现

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

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


    如果你只想画一个精灵,你不需要VS2010或XNA工作室

    首先手动创建.spritefont xml。您可以使用以下示例:

    然后使用XNA内容编译器将其编译为.xnb:

    以下是一个很好的教程: 但请注意,您不需要XNA studio。手工编辑.spritefont xml非常容易

    不要忘记设置内容目录:content.RootDirectory=“content”;
    并且.xnb属性应该设置为“Content”和“Copy Always”。(至少这是我的Windows 8 MonoGame项目所必需的)

    我认为您不再需要XNA了

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

    右键单击内容->添加->新项目->Spritefont描述,为其命名,例如“testfont”

    在游戏中加载您的spritefont:

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

    我确实遇到过XNA游戏工作室,但它似乎需要VS2010,所以我认为这已经过时了。我真的需要安装VS2010吗?如果您想使用XNA内容管道,那么是的,您当前需要Visual Studio 2010。XNA不正式支持较新版本的Visual Studio,而且永远也不会,因为Microsoft已经放弃了对该框架的支持。我想补充一点,MonoGame团队正在努力更换内容管道,因此不应该总是这样。我们需要将testfont编译成XNB吗?在这里似乎不起作用。编译器会抛出一个错误,就好像它无法访问内容文件夹一样(显然是这样,因为它会像应该的那样将spritefont编译成.xnb,但它仍然不能在游戏中绘制)。DrawString方法没有任何错误,但没有绘制字符串。奇怪的还有人知道这个吗?
    var font = Content.Load<SpriteFont>("testfont");
    
    spriteBatch.DrawString(font, "hello", new Vector2(10, 10), Color.AliceBlue);