跳至正文
版本:最新版 - a1.169.2 ⚖️

名称标签

如何为角色添加名称标签。

Client/Index.lua
-- 为玩家添加名称标签的函数
function AddNametag(player, character)
-- 我们不需要看到自己的名称标签
if (player:IsLocalPlayer()) then return end

-- 尝试获取其角色
if (character == nil) then
character = player:GetControlledCharacter()
if (character == nil) then return end
end

-- 生成名称标签(TextRender)
local nametag = TextRender(
Vector(), -- 任意位置
Rotator(), -- 任意角度
player:GetName(), -- 玩家名
30, -- 文本字号
Color.WHITE -- 白色
)

-- 将其附加到角色上并保存到玩家的数值中
nametag:AttachTo(character)
nametag:SetRelativeLocation(Vector(0, 0, 250))

player:SetValue("Nametag", nametag)
end

-- 从玩家身上移除名称标签的函数
function RemoveNametag(player, character)
-- 尝试获取其角色
if (character == nil) then
character = player:GetControlledCharacter()
if (character == nil) then return end
end

-- 从玩家处获取名称标签(如果有)并销毁它
local text_render = player:GetValue("Nametag")
if (text_render and text_render:IsValid()) then
text_render:Destroy()
end
end

-- 为被控制的角色添加新名称标签
Character.Subscribe("Possess", function(character, player)
AddNametag(player, character)
end)

-- 从取消控制的角色身上移除名称标签
Character.Subscribe("UnPossess", function(character, player)
RemoveNametag(player, character)
end)

-- 包加载时,为服务器中已存在的玩家添加名称标签
-- (例如:当你加入一个已有玩家在线的服务器时,或重新加载包时)
Package.Subscribe("Load", function()
for _, player in pairs(Player.GetPairs()) do
RemoveNametag(player)
AddNametag(player)
end
end)
提示

你还可以使用 Text3D 类来创建具有深度、斜角和描边效果的 3D 文本!