Skip to content

EUISceneNode

概览

字段
KindUnit · 单位 Unit
Realmcommon

继承关系

  • Unit(4 属性 / 25 函数 / 6 事件)
    • EUINodeBase(34 属性 / 8 函数 / 4 事件)
      • [EUISceneNode](5 属性 / 1 函数)

继承成员

2 个来源 / 38 属性 / 33 函数 / 10 事件

EUISceneNode 是用于把 UI 放到三维世界中的场景界面节点,可设置世界坐标,也可挂接到 Unit 的指定 socket。

适用场景

常用于角色头顶名称、血条、交互提示等跟随场景对象显示的 UI。

使用要点

通过 Players.LocalPlayer.PlayerGui.EuiManager 的 CreateSceneNodeAtPosition(position, nodeInfo) 创建固定位置节点,或用 CreateSceneNodeAttachUnit 创建跟随节点;需要重新绑定已有节点时调用 AttachUnit(unit, socket)。

注意事项

EUISceneNode 不能直接调用类型构造函数,也不能通过 World:CreateUnit 创建。应通过 EUIManager 的公开创建接口获取实例;Position 的 editable=false 只表示不在编辑器面板编辑,并非 Lua 只读,作者侧可通过公开属性赋值更新。AttachUnit 的第一个参数必须是已存在的 Unit 实例,socket 为挂点名称字符串。

代码示例

创建三维场景 UI 节点

lua
-- @runtime client
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
if localPlayer == nil then return end
local euiManager = localPlayer.PlayerGui.EuiManager
local sceneNode = euiManager:CreateSceneNodeAtPosition(
    Vector3.New(0, 5, 0),
    { InheritVisible = true, MaxVisibleDistance = 50 }
)
sceneNode.Position = Vector3.New(2, 6, 0)

属性 (5)

Name类型默认值说明
PositionVector3[0, 0, 0]场景节点的世界坐标;可在 CreateSceneNodeAtPosition 创建时传入,也可通过公开属性赋值更新。
BindSocketString""场景节点绑定的挂接点名称,用于指定节点在目标 Unit 上的附着位置。
InheritVisibleBoolfalse控制场景节点是否跟随所绑定 Unit 的可见性状态。
MaxVisibleDistanceFloat-1场景节点相对于摄像机的最大可见距离,超过此距离节点将不可见。
AutoScaleEnabledBooltrue开启自动缩放(近大远小)

关联类型

函数 (1)

AttachUnit

签名:AttachUnit(unit: Unit, socket: String) -> void

将指定的 Unit 实例绑定到 EUISceneNode 上,使该场景节点可以跟随目标单位进行显示。通过传入单位对象和挂点名称,可以将场景 UI 元素附着到单位的指定骨骼或挂点上。

参数类型说明
unitUnit要挂接的目标 Unit 实例。
socketString目标 Unit 上的挂点名称字符串,例如 "Head"。

返回值 void

示例代码

把场景 UI 绑定到已有目标单位

lua
-- @runtime client
local World = game:GetService("World")
local sceneNode = World:FindFirstChild("QuestMarkerUI", true)
local target = World:FindFirstChild("QuestTarget", true)
if sceneNode ~= nil and target ~= nil then
    sceneNode:AttachUnit(target, "Head")
end