SpriteBatch DrawString绘制错误的字符

时间:2015-07-05 12:35:36

标签: monogame drawstring spritebatch

我一直在研究练习和学习日语的应用程序,因此我使用英语字母以外的字符。我最近更新了我在应用程序上完成的工作,将其转移到新解决方案以利用新的管道流程。我有应用程序的基本功能,但是当我显示日文字符时,会在那里绘制一个空框...

由于是新人,我无法张贴这张照片......

这很奇怪,因为当代码在之前的解决方案中时,它没有这样做。在之前的解决方案中,我使用了一个单独的项目来获取应用程序的内容。我试过更改字体以查看是否有错误,但没有运气。

我是否遗漏了一个常见问题?我假设这意味着该方法在某处返回null,但后来我不知道为什么它在以前工作...

我在字体“字符”属性下检查并发现该字体具有我当时尝试使用的字符,因此错误必须在此之后的某个时间发生。

static private void DrawStat(SpriteBatch spriteBatch, int current)
    {
        spriteBatch.DrawString(CharracterFont, TempList[current].ReadCharracter.readChar, new Vector2(DrawArea.X, DrawArea.Y + 20 + (50 * (current - Selected))), Color.Black, 0f, Vector2.Zero, 0.1f, SpriteEffects.None, 1f);
        spriteBatch.DrawString(EnglishFont, TempList[current].ReadCharracter.ReadSound, new Vector2(DrawArea.X + 100, DrawArea.Y + 20 + (50 * (current - Selected))), Color.Black, 0f, Vector2.Zero, 0.2f, SpriteEffects.None, 1f);
        spriteBatch.DrawString(EnglishFont, TempList[current].readAccuracies.X.ToString(), new Vector2(DrawArea.X + 200, DrawArea.Y + 20 + (50 * (current - Selected))), Color.Black, 0f, Vector2.Zero, 0.2f, SpriteEffects.None, 1f);
        spriteBatch.DrawString(EnglishFont, TempList[current].readAccuracies.Y.ToString(), new Vector2(DrawArea.X + 300, DrawArea.Y + 20 + (50 * (current - Selected))), Color.Black, 0f, Vector2.Zero, 0.2f, SpriteEffects.None, 1f);
    }

对于凌乱的代码感到抱歉......

我想知道从另一个解决方案中处理spritefont之间是否存在问题,但我对英文字体做了同样的事情并且没有问题......

1 个答案:

答案 0 :(得分:0)

发现它是monogame spritefont导入器的一个问题所以我看了一下,发现spriteFonts是由一个新的导入器导入的。在加载字体之前我在我的程序中设置了一个停止点,并将由monogame导入器生成的Font xnb转换为由Xna生成的一个,这似乎解决了我遇到的问题。