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

本文关键字:SpriteFont 其他 什么 字体 图像 XNA | 更新日期: 2023-09-27 18:25:10

所以我已经进入了我正在进行的基于2D XNA的自上而下的破解和斜杠项目的部分,我需要在屏幕上绘制文本。我想使用的是一个SpriteSheet风格的图像,我找到了这个项目所需的字符和符号。

现在,在提问之前,我已经对此做了一些阅读,将"字体"或其他东西放在屏幕上的唯一两种方法是使用计算机上已经安装的字体,或者,根据这一点,我必须创建一个自定义内容处理器?

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

提前谢谢。

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

您可以按照从精灵表中绘制任何其他精灵的方式绘制它。

您可能已经知道SpriteBatch.Draw方法有一些重载,这些重载可以从您的sprite工作表中获取代表源的Rectangle

你可以用字典跟踪你从字符到精灵矩形的关系

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*/);
}

请记住,你也必须自己管理字母的间距,但也可以自己管理。

然而,看起来ContentManager支持基于jpgpng等图像格式创建SpriteFonts,所以我想说,你最好探索一下


进一步的谷歌搜索会产生FontTextureProcessor类,这可能会有所帮助。