1 个不稳定版本
0.4.0 | 2024年4月5日 |
---|
#1239 in 游戏开发
41KB
371 行
extol_image_font
允许渲染以单个图片(通常是 PNG)存储的字体,每个字母位于特定位置。这在游戏开发中很常见,尤其是像素艺术字体,因为它允许使用颜色,并且可以使用任何图像编辑器创建字体,而无需使用专业软件。这些有时也被称为'像素字体',但我选择使用'图片字体'这个名字更为精确(因为存储在 OTB 中的位图字体也可以称为'像素字体')。
功能
支持
- Unicode(任何适合单个代码点的字符)
- 通过包含字母的字符串指定坐标(请参阅示例资产)
- 手动指定矩形(包括非均匀大小)
未来工作
- 自动纹理布局的填充和偏移
- 在字符串中嵌入换行符
范围之外
- 从'实际'位图字体进行渲染
- 自动换行
注意事项
- 您需要有一块仅包含空白部分的纹理,并将空格字符映射到它。
- 目前不支持换行。
如何使用
请注意,对于像素精确渲染,将文本定位在整数坐标'在世界中'可能会导致文本模糊。 我不确定原因。如果发生这种情况,您可能需要将 x/y 坐标偏移一个小量,如 0.1。这似乎在使用 bevy_ui 时不太成问题。
只需选择具有 Handle<Image>
或 UiImage
组件的任何实体,例如使用 SpriteBundle
或 ImageBundle
创建的实体,并向其添加一个 ImageFontText
组件。
请参阅 bevy_ui 示例 以使用 bevy_asset_loader
存储库构建纹理布局和图像的句柄,或者如果您想在'世界'中使用像素字体(例如用于飞行伤害文本),请参阅 sprite 示例。
如果您不使用 bevy_ui
,您可以禁用默认启用的 bevy_ui
功能,以避免对该存储库产生依赖。
这个包使用 image
包来加载图像,但默认情况下只启用 PNG 支持。如果您需要其他格式,请添加您自己的(相同版本的)image
依赖项并启用相关功能。
工作原理
致谢
示例字体由 gnsh 提供。
依赖项
~37–73MB
~1.5M SLoC