创建 3D GUI 元素
问题
当希望创建角色头顶生命栏或人物名等自定义 3D GUI 时,请参考下列代码:
解决方案
使用 3DUIBillboard 作为容器,而不使用 StarterGui。
game.getService("Players").LocalPlayer.Character and game.getService("Players").Character:findFirstChild('Head')
 
script.Parent.Adornee = game.getService("Players").LocalPlayer.Character.Head
script.Parent.TextLabel.Text = string.reverse(game.getService("Players").LocalPlayer.Name)
讨论
在 WorkSpace 中创建一个 3DUIBillboard (同步显示给其它玩家),并在其中放置 UITextLabel 和 LocalScript。3DUIBillboard Size2D 属性应设置为 {1, 1}。
在我们的脚本中可以用到先前提过的一些 LocalScript 快捷方式。想要获得 Player 目录时,不必使用 script.Parent.Parent.Parent,只需要用 game.getService("Players").LocalPlayer 即可。我们等到 LocalPlayer(正在使用 StarterGui 的用户)拥有 Character 和 Head 后,把 3DUIBillboard 的 Adornee 设置为该 Head对象。 下面,我们设置 UITextLabel,将其文本设置为 LocalPlayer 新文本的反向。
这样做的结果是,反转过来的名字会在头顶出现。注意,所有的 StarterGui 都是本地的,只会出现在正在使用 StarterGui 的 Player 处。因此,悬浮在自己头顶上的文本,只有自己可见。其他玩家会看到他们的名字反向悬浮在其头顶,但无法看到其他人的。
另外还需注意的是,在撰写这段介绍的时间点,
3DUIBillboard仍处于开发阶段。因此,它可能会存在有 bug。其中之一是:StarterGui中创建3DUI会不生效。
