Hiển thị tên/sức khỏe nhân vật

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Đối tượng Humanoid được sử dụng để tạo ra các mô hình nhân vật, cả cho avatar người dùng và NPC. Khi một Humanoid hiện diện bên trong một Model chứa một phần được gọi là Head, Roblox sẽ hiển thị tên và/hoặc thanh sức khỏe phía trên phần đó.

Thông tin hiển thị nhân vật phía trên một avatar trong trò chơi

Thông qua các thuộc tính khác nhau của Humanoid, bạn có thể sửa đổi các thông tin sau:

  • Khoảng cách từ đó người dùng có thể thấy tên/sức khỏe của các nhân vật khác liên quan đến nhân vật của riêng họ.
  • Tên hiển thị hiển thị trên một humanoid.
  • Liệu thanh sức khỏe của một humanoid có luôn xuất hiện, không bao giờ xuất hiện, hoặc chỉ xuất hiện khi humanoid bị tổn thương.
  • Liệu tên và thanh sức khỏe có bị che khuất (ẩn) khi đường ngắm giữa camera và humanoid khác bị chặn.

Thuộc tính hiển thị

Loại khoảng cách hiển thị

Thuộc tính Humanoid.DisplayDistanceType xác định cách mà người dùng thấy tên/sức khỏe của các nhân vật khác liên quan đến nhân vật của riêng họ.

Viewer

Khi loại DisplayDistanceType của một humanoid được đặt thành HumanoidDisplayDistanceType.Viewer, nó sẽ thấy tên/sức khỏe của các humanoid khác trong phạm vi của NameDisplayDistanceHealthDisplayDistance của chính nó. Bạn có thể coi điều này là ưu tiên thấp nhất vì nó không được tính cho các humanoid khác được cấu hình là subject hoặc none.

Trong kịch bản sau, nhân vật của người dùng (Viewer) có khoảng cách NameDisplayDistance lớn hơn HealthDisplayDistance, như được chỉ định bởi các vòng tròn. Do đó, người dùng thấy tên nhân vật cho cả WatchmanOctavia, nhưng chỉ thấy thanh sức khỏe cho Watchman.

Subject

Khi loại DisplayDistanceType của một humanoid được đặt thành HumanoidDisplayDistanceType.Subject, nó sẽ kiểm soát hoàn toàn hiển thị tên và sức khỏe của nó thông qua các giá trị NameDisplayDistanceHealthDisplayDistance. Thực tế, các humanoid khác sẽ chỉ nhìn thấy tên/sức khỏe của chủ thể trong khoảng cách đó từ humanoid subject.

Trong kịch bản sau, cả WatchmanOctavia đều được đặt thành Subject và phạm vi NameDisplayDistance của chúng được chỉ định bởi các vòng tròn. Chỉ có tên Octavia được thấy bởi người dùng có nhân vật đứng trong phạm vi của cô ấy nhưng ngoài phạm vi của humanoid Watchman.

None

Khi loại DisplayDistanceType của một humanoid được đặt thành HumanoidDisplayDistanceType.None, tên và thanh sức khỏe của nó không xuất hiện dưới bất kỳ hình thức nào. Trong kịch bản sau, cả WatchmanOctavia đều được đặt thành None, vì vậy nhân vật khác không thấy tên hoặc sức khỏe của họ ngay cả khi ở trong phạm vi.

Loại hiển thị sức khỏe

Thuộc tính Humanoid.HealthDisplayType cung cấp thêm quyền kiểm soát đối với khả năng hiển thị thanh sức khỏe của nhân vật. Thanh này phản ánh Health của humanoid như một yếu tố của MaxHealth của nó và nó thay đổi màu từ xanh sang vàng sang đỏ khi sức khỏe của humanoid giảm.

AlwaysOn

Khi loại HealthDisplayType của một humanoid được đặt thành HumanoidHealthDisplayType.AlwaysOn, thanh sức khỏe của nó luôn xuất hiện.

DisplayWhenDamaged

Một humanoid có loại HealthDisplayType được đặt thành HumanoidHealthDisplayType.DisplayWhenDamaged chỉ hiển thị thanh sức khỏe khi Health của nó ít hơn MaxHealth. Trong kịch bản sau, Watchman có sức khỏe đầy đủ và không hiển thị thanh sức khỏe, nhưng Octavia bị tổn thương 50% và hiển thị một thanh sức khỏe màu vàng.

AlwaysOff

Khi loại HealthDisplayType của một humanoid được đặt thành HumanoidHealthDisplayType.AlwaysOff, thanh sức khỏe của nó không bao giờ xuất hiện trong bất kỳ trường hợp nào.

Che khuất

Việc che khuất (ẩn) tên của humanoid phía sau các bức tường hoặc đối tượng khác được kiểm soát bởi thuộc tính Humanoid.NameOcclusion của nhân vật.

NoOcclusion

Khi một humanoid bị ẩn phía sau một đối tượng có thể nhìn thấy và thuộc tính NameOcclusion của nó được đặt thành NameOcclusion.NoOcclusion, thì tên và sức khỏe của nó không bao giờ bị che khuất khỏi các humanoid khác.

Trong kịch bản sau, cả WatchmanOctavia đều được đặt thành NoOcclusion. Mặc dù cả hai đều đủ ẩn sau các cột đá, humanoid đang xem vẫn thấy hiển thị tên/sức khỏe của họ.

OccludeAll

Khi một humanoid bị ẩn phía sau một đối tượng có thể nhìn thấy và thuộc tính NameOcclusion của nó được đặt thành NameOcclusion.OccludeAll, thì tên và sức khỏe của nó luôn bị che khuất khỏi các humanoid khác.

Trong kịch bản sau, cả WatchmanOctavia đều đủ ẩn sau các cột đá. Watchman được đặt thành OccludeAll, vì vậy tên và sức khỏe của nó bị ẩn khỏi humanoid đang xem. Tuy nhiên, Octavia, được đặt thành NoOcclusion và tên/sức khỏe của cô ấy vẫn còn rõ ràng với humanoid đang xem.

EnemyOcclusion

Khi một humanoid bị ẩn phía sau một đối tượng có thể nhìn thấy và thuộc tính NameOcclusion của nó được đặt thành NameOcclusion.EnemyOcclusion, thì tên và sức khỏe của nó chỉ bị che khuất khỏi các humanoid kẻ thù (người chơi ở một Team khác).

Trong kịch bản sau, cả WatchmanOctavia đều đủ ẩn phía sau các cột đá, và cả hai đều được đặt thành EnemyOcclusion. Humanoid đang xem và Watchman ở cùng một Team, vì vậy việc che khuất tên/sức khỏe không xảy ra. Tuy nhiên, tên và sức khỏe của Octavia, ở đội đối lập, thì bị che khuất.

Sửa đổi hiển thị nhân vật

Avatar người dùng

Để sửa đổi hiển thị tên hoặc sức khỏe cho tất cả avatar mới vào trò chơi, kết nối các sự kiện Players.PlayerAddedPlayer.CharacterAdded trong một Script và đặt các thuộc tính hiển thị trên Humanoid của nhân vật.

Script - Tùy Chỉnh Toàn Cầu
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Đưa mỗi humanoid quyền kiểm soát hoàn toàn trên khoảng cách hiển thị tên/sức khỏe
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Đặt khoảng cách hiển thị tên là 20 studs
humanoid.NameDisplayDistance = 20
-- Đặt khoảng cách hiển thị thanh sức khỏe là 15 studs
humanoid.HealthDisplayDistance = 15
-- Chỉ hiển thị thanh sức khỏe khi humanoid bị tổn thương
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Bạn cũng có thể tùy chỉnh các thuộc tính dựa trên Team của người chơi, chẳng hạn như đặt tất cả người chơi "guard" thành một tên chung chung, và ẩn tên của tất cả người chơi "ninja".

Script - Tùy Chỉnh Đội
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Đặt tên của tất cả guard thành "Guard" chung chung
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- Ẩn tên cho tất cả ninja
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Nhân vật NPC

Đối với các nhân vật NPC đã được đặt trong thế giới 3D, bạn có thể chỉnh sửa tên/sức khỏe trực tiếp trên đối tượng Humanoid trong cửa sổ Thuộc tính.

Ghi đè tên hiển thị

Theo mặc định, tên hiển thị của một humanoid khớp với Tên Hiển Thị của tài khoản Roblox của người dùng, là duy nhất và riêng biệt với Tên Người Dùng của tài khoản của họ. Để cho hiển thị một tên hoàn toàn tùy chỉnh không liên quan đến tài khoản của người dùng, bạn có thể ghi đè thuộc tính Humanoid.DisplayName.

Đặt trực tiếp

Bạn có thể đặt thuộc tính DisplayName của bất kỳ đối tượng Humanoid nào mà bạn có tham chiếu thông qua một Script, chẳng hạn như ví dụ tùy chỉnh đội, hoặc trực tiếp trên đối tượng Humanoid của một nhân vật NPC.

Đặt thông qua đầu vào của người dùng

Trong một số thể loại như nhập vai hoặc chiến đấu, bạn có thể muốn cung cấp một phương thức cho người dùng để nhập tên nhân vật của họ, tên thú cưng của họ, v.v. mà cụ thể cho trải nghiệm và không bị ràng buộc với tên hiển thị tài khoản của họ. Bạn có thể thu thập đầu vào này ở phía khách hàng thông qua một TextBox để nhập tên.

Khi đầu vào được gửi đi, bạn có thể truyền nó đến máy chủ thông qua một sự kiện từ xa và sau đó, ở phía máy chủ, lắng nghe sự kiện từ xa và gán tên đã được lọc cho Humanoid của nhân vật người dùng.

LocalScript - Gửi Sự Kiện Từ Xa
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")
changeNameEvent:FireServer("Amory")
Script - Gán Tên Đã Được Lọc
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Tạo sự kiện từ xa để nhận văn bản từ khách hàng để lọc
local changeNameEvent = Instance.new("RemoteEvent")
changeNameEvent.Name = "ChangeNameEvent"
changeNameEvent.Parent = ReplicatedStorage
local function onRequestNameChange(player, newName)
local character = player.Character
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local filterResult
local success, errorMessage = pcall(function()
filterResult = TextService:FilterStringAsync(newName, player.UserId)
end)
if success then
local filteredName
local success, errorMessage = pcall(function()
filteredName = filterResult:GetNonChatStringForBroadcastAsync()
end)
if success and humanoid then
humanoid.DisplayName = filteredName
end
end
end
changeNameEvent.OnServerEvent:Connect(onRequestNameChange)
©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.