【问题标题】:How to import a SpriteFont into MonoGame如何将 SpriteFont 导入 MonoGame
【发布时间】:2012-06-18 09:05:53
【问题描述】:

我正在将一个简单的类似俄罗斯方块的 XNA 应用程序移植到 Android,使用 Mono For Android 和 MonoGame;我已经按照this link 中的建议步骤进行操作,到目前为止,一切都编译得很好,并且没有出现相关警告。但是,在加载内容时,一个空参数异常会在我的程序中的以下位置中断程序:

protected override void LoadContent() {
    // ...
    _font = Content.Load<Microsoft.Xna.Framework.Graphics.SpriteFont>("SpriteFont1");
    // ... 
}

内容根目录在游戏构造器类中设置:

public Game2 (){
Content.RootDirectory = "Content";
Content.RootDirectory = "Assets/Content"; // TEST.
//...}

我已经尝试了几种组合,都无济于事。

我还尝试在 Build Action 属性中将 xnb 文件设置为 Content 和 Android Assets;有链接,总是复制,只有更新时才复制......等等。

不管怎样,我的问题是我真的不明白 WHYHOW 我应该这样做。我对平台和 XNA 都很陌生,所以这很可能是一个新手问题,但事实是,在我用头和拳头敲打显示器/键盘几个小时后,我感到卡住了,需要你的帮助。

【问题讨论】:

    标签: android xamarin.android android-assets monogame spritefont


    【解决方案1】:

    我有一个 library 在 MonoGame 上支持可变宽度字体(由 BMFont 生成)。不幸的是,它是一个渲染器,周围还有其他代码。但是,基本思想非常简单。您可以在此处查看loader 和网格构建器(给定字符串)here。此构建器也支持将字符分散到多个页面的字体。

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      MonoGame (2.5.1) 在 ContentManager.Load 中为 SpriteFont 类型抛出 NotImplementedException。有同样未解决的问题。我正在尝试不使用 DrawString。

      为了在我使用的 Win32 应用程序中加载纹理:

      Content.RootDirectory = @"../../Content";
      var sampleTexture = Content.Load<Texture2D>("Sample.png");
      

      你甚至不能将它添加到解决方案中。

      对于 Andoind (MonoDroid) 应用程序,您必须将“Content”文件夹添加到您的解决方案中,并在“Sample.png”属性中设置“Andtoid Asset”。

      Content.RootDirectory = "Content";
      var sampleTexture = Content.Load<Texture2D>("Sample.png");
      

      另见:

      http://monogame.codeplex.com/discussions/360468

      http://monogame.codeplex.com/discussions/267900

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2013-05-14
        • 2014-09-05
        相关资源
        最近更新 更多