2

因此,我已经完成了我正在处理的基于 2D XNA 的自上而下的 hack-and-slash 项目的一部分,我需要在屏幕上绘制文本。我想要使​​用的是一个 SpriteSheet 风格的图像,我找到了这个项目需要的字符和符号。

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

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

提前致谢。

4

1 回答 1

2

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

您可能已经知道SpriteBatch.Draw方法有一些重载,这些重载可以采用Rectangle表示精灵表中源的 a。

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

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 支持基于图像格式创建 SpriteFonts ,例如jpgpng,所以我想说你最好探索一下


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

于 2013-07-26T22:01:21.967 回答