在XNA中使用图像作为字体(SpriteFont?或其他什么?)

时间:2013-07-26 20:49:16

标签: c# xna

所以我已经完成了基于2D XNA的自上而下的黑客攻击和斜线项目的部分,我正在处理我需要在屏幕上绘制文本的位置。我想要使​​用的是一个SpriteSheet-esque图像,我找到了这个项目我需要的字符和符号。

现在,我在询问之前已经对此进行了一些阅读,并且将“字体”或其他内容放到屏幕上的唯一两种方法是使用已安装在计算机上的字体,或者,根据{ {3}},我必须创建自定义内容处理器吗?

我的问题是,如果我有一张图片(例如,PNG格式),其中包含我想要的所有字母/字符,我该如何在2D游戏中使用这些字母?它不一定是基于XNA的解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:2)

你准确地绘制它如何从精灵表中绘制任何其他精灵。

您可能已经知道SpriteBatch.Draw方法有一些重载可能需要Rectangle代表精灵表中的来源。

你可以用字典跟踪你从chars到sprite矩形的关系

Dictionary<char, Rectangle> fontDict = new Dictionary<char,Rectangle>();
fontDict.Add('A', new Rectangle(/*params representing source of A*/);

你可以使用for或foreach循环来表达你的话语

for(int i = 0; i<str.Count; i++)
{
    Rectangle spriterect = fontDict[str[i]];

    SpriteBach.Draw(/*params*/);
}

请记住,您还必须自己管理字母的间距,但可以自行完成。

但确实Look like the ContentManager supports creating SpriteFonts based off of image formats such as jpg and png,所以我想你可能会更好地探索


进一步使用Google搜索会产生FontTextureProcessor Class,这可能会有所帮助。