Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

3D 文本

前言

项目中不仅会要在 HUD 中使用文本,有时也会需要把文本作为 3D 场景的一部分。Godot 为此提供了两种方法。Label3D 节点以及 MeshInstance3D 节点的 TextMesh 资源

此外,Godot 还可以使根据 3D 顶点在相机上的位置来定位控制节点成为可能。在 Label3D 和 TextMesh 不够灵活的情况下,这可以用作 "真实的" 3D 文本的替代方案。

参见

你可以使用 3D 标签和文本演示项目 查看3D文本的实际效果。

这个页面不会涉及如何在 3D 环境中显示 GUI 场景。有关如何实现这个功能的信息,请参考GUI in 3D 演示项目。

Label3D

../../_images/label_3d.png

Label3D 的行为类似于 Label 节点,只不过是换到了 3D 空间中。与 Label 节点不同,此 Label3D 节点继承 GUI 主题的属性。不过,外观还是可定制的,使用的也是与 Control 节点相同的字体子资源(包括对 MSDF 字体渲染的支持)。

优势

  • Label3D 的生成速度比 TextMesh 快。虽然两者都使用缓存机制,只渲染一次新字形,但 Label3D 的(重新)生成速度仍然更快,尤其是对于长文本。这可以避免在低端 CPU 或移动设备上玩游戏时出现卡顿。

  • Label3D can use bitmap fonts and dynamic fonts (with and without MSDF or mipmaps). This makes it more flexible on that aspect compared to TextMesh, especially for rendering fonts with self-intersecting outlines or colored fonts (emoji).

参见

有关配置字体导入的指南,