1

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

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;有链接,总是复制,只有更新时才复制......等等。

无论哪种方式,我的问题是我真的不明白 为什么以及如何做到这一点。我对这个平台和 XNA 也很陌生,所以这很可能是一个新手问题,但事实是,在我用头和拳头敲打显示器/键盘几个小时后,我感到卡住了,需要你的帮助。

4

2 回答 2

0

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

于 2012-06-21T11:28:31.110 回答
0

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

希望这可以帮助!

于 2012-06-21T13:21:33.297 回答