3D 文本

前言

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

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

Label3D

../../_images/label_3d.png

Label3D 与标签节点行为类似,只不过是换到了 3D 空间中。与标签节点不同,它是不会继承 GUI 主题属性的。不过,还是可以自定义外观的,使用的也是和控件节点同样的 DynamicFont 和 BitmapFont 子资源。

Label3D 和 3D 环境的交互很少,着色标志启用时能够接受光照、被光源着色,但即便 GeometryInstance3D 节点打开了阴影投射,它也不会投射阴影。这是因为该节点是一个带透明纹理的四边形网格(每个四边形一个字形),有着和 Sprite3D 一样的限制。详情请参阅这个页面

文本网格

../../_images/text_mesh.png

文本网格与 Label3D 类似。会在 3D 场景中显示文本,也会用到相同的 DynamicFont 子资源。不过文本是 3D 的,具有网格的属性。文本网格会向环境投射阴影,并且能够应用材质。这个例子展示的是如何在该网格上应用纹理。

../../_images/text_mesh_texture.png ../../_images/text_mesh_textured.png

文本网格有两个限制。它无法使用位图字体,也不能使用存在自交的字体。