角色名稱/健康顯示

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

Class.Humanoid 實例用於創建人物模型,並且可以用於用戶虛擬人偶和 NPC。當 HumanoidModel 內,內含有名為 1>頭部1> 的一個項目,Roblox 會在該項目上方顯示名稱和/或生命值條。

Character display information above an in-experience avatar

通過各種 Humanoid 屬性,您可以修改以追蹤中內容:

  • 用戶可以從 距離 查看其他人形與自己的角色人形關聯的名稱/健康。
  • 顯示名稱,用於顯示超人形。
  • 人形的生命值條是否會一直顯示,從來不會顯示或只會顯示人形受損時。
  • 當視線隱藏時,是否會有名稱和健康條狀態欄顯示在攝影機和其他人形之間。

顯示屬性

顯示距離類型

Class.Humanoid.DisplayDistanceType 屬性設定用戶在其自己的角色與其他角色的名稱/健康關係時,用戶可以看到哪些資訊。

檢視器

當人形的 DisplayDistanceType 設為 HumanoidDisplayDistanceType.Viewer 和 Class.Humanoid.

在下列場景中,使用者的角色 ( 檢視器 ) 有更大的 NameDisplayDistanceHealthDisplayDistance ,指示由圓圈所示。因結果,使用者只能看到

主題

當人形的 DisplayDistanceType 設為 HumanoidDisplayDistanceType.Subject 時,它會對

在下列場景中,將 觀看者奧克提維亞 設置為 對象 和其 1> Class.Humanoid.NameDisplayDistance|NameDisplayDistance1> 範圍由環形表示。只有 4> 奧克蒂維亞

當人形體的 DisplayDistanceType 設為 HumanoidDisplayDistanceType.None 時,其名稱和健康狀態條在任何情況下都不會顯示。在下一個場景中, 觀看者

生命值顯示類型

Class.Humanoid.HealthDisplayType 屬性提供進一步控制角色的健康欄顯示狀態。欄子反射人形的 Health 作為其 MaxHealth 的因素,並且改變綠色變成黃色,紅色變成紅色,因為人形的

AlwaysOn

當人形的 HealthDisplayType 設為 HumanoidHealthDisplayType.AlwaysOn 時,其健康狀態欄隨時出現。

受損時顯示

HealthDisplayType 設為 HumanoidHealthDisplayType.DisplayWhenDamaged 只會顯示生命值條,當其

永遠關閉

當人形體的 HealthDisplayType 設為 HumanoidHealthDisplayType.AlwaysOff 時,其生命值欄永遠不會在任何情況下顯示。

閉嘴

人形名稱在牆壁或其他物體後隱藏時,會受到 Humanoid.NameOcclusion 角色的屬性控制。

NoOcclusion

當人形隱藏在可見物體後,其 NameOcclusion 設為 NameOcclusion.NoOcclusion ,其名稱和健康狀態從檢視人形時永遠不會隱藏。

在下列場景中, 觀看者奧克提維亞 設置為 NoOcclusion 。雖然兩者都足夠隱藏在石柱後,但觀看人形仍然會看到他們的名稱/健康顯示。

包含所有

當人形隱藏在可見物體後,其 NameOcclusion 設為 NameOcclusion.OccludeAll ,其名稱和健康狀態始終是從查看人形時隱藏的。

在下列場景中,監視者和監視者之間的石柱是足夠地隱藏在石柱後面。 監視者設為 關閉所有 ,因此它的名稱和生命值都隱藏於檢視人形。 監視者設為 不妨礙 ,因

敵人圍閉

當人形隱藏在可見物體後,其 NameOcclusion 設為 NameOcclusion.EnemyOcclusion ,其名稱和健康只是隱藏於不同的 Team 玩家上。

在下列場景中,監視者和Octavia都隱藏在石柱後足夠遠處,並且設為敵方眼睛。 視野人形和監視者都在同一個Class.Team上,因此名稱/健康盲目不會

修改角色顯示

用戶虛擬人偶

要修改每個進入體驗的虛擬人偶的名稱或健康顯示,請連接 Players.PlayerAddedPlayer.CharacterAdded 事件在 Script 中,並設置 1>顯示屬性1> 在角色的 4>Class.Humanoid4> 上。

指令碼 - 全球自訂

local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- 每個人形的全部控制名稱/健康顯示距離
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- 將名稱顯示距離設為 20 格
humanoid.NameDisplayDistance = 20
-- 將健康狀態顯示距離設為 15 格
humanoid.HealthDisplayDistance = 15
-- 傷害人形時僅顯示生命值盤
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

您還可以根據玩家的 Team 自訂屬性,例如將所有「守衛」玩家設置為一般名稱,並隱藏所有「忍者」玩家的名稱。

指令碼 - 團隊自訂

local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- 將所有守衛的名稱設為「Guard」
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- 隱藏所有忍者的名稱
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

NPC 角色

對於已位於 3D 世界中的 NPC 角色,您可以在 Humanoid 對象上直接編輯名稱/健康。

覆蓋顯示名稱

由預設,人形的顯示名稱與用戶的 Roblox 帳戶 顯示名稱 一致,這是獨一無二的,與帳戶 用戶名 無關的名稱。要顯示與用戶帳號無關的全自訂名稱,您可以覆蓋 Humanoid.DisplayName 屬性。

設置直接

您可以設定任何 DisplayName 屬性的 Humanoid 實例,其中您獲得參考通過 Script 來直接在 1> NPC1> 角色的 4>人形4> 對物件上,或者在直接在 7>N

設置通過使用者輸入

在某些遊戲類型,例如角色扮演或格鬥,您可能想要提供給用戶輸入自己的角色名稱、寵物角色名稱等,這是與帳號顯示名稱無關的特定體驗。您可以在客戶端通過 TextBox 收集此輸入。

輸入提交後,您可以將它傳送給服務器,通過 遠端事件 將其傳送到服務器,然後,在服務器側聽取遠端事件並為用戶角色的 Class.Humanoid 指定 Humanoid 名稱。

本地腳本-發射遠端事件

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")
changeNameEvent:FireServer("Amory")
指令碼 - 指定過濾器名稱

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- 創建遠端事件以從客戶端獲取文字以進行篩選
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)