使用者與玩家

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

當 Roblox 使用者加入遊戲時,他們在 DataModel 中以 Player 的形式表示。這個 Player 物件包含了在各個遊戲中通用的使用者資訊,例如他們的使用者名稱、好友列表和儲存的 角色化身,以及影響使用者在遊戲中加入和離開之間的 生命週期 的屬性、方法和事件。每個 Player 物件還包含四個重要的 容器,您可以使用這些容器來自訂使用者的體驗:Backpack、StarterGear、PlayerGui 和 PlayerScripts。

每個 Player 還公開一個 Player.User 屬性,這是一個 User 值,表示玩家在當前遊戲中的域範圍身份。關於使用者識別如何運作的更多資訊,包括域範圍的使用者 ID 和 User 類型,請參見 使用者和域範圍的使用者 ID。

生命週期

Players 服務包含了遊戲中的所有 Player 實例。客戶端和伺服器端的腳本都可以連接到 Players.PlayerAdded 和 Players.PlayerRemoved 事件,以對 Player 物件的生命週期執行操作。腳本還可以連接到 Player.CharacterAdded 和 Player.CharacterRemoving 事件,以在角色生成或消失時執行與遊戲相關的操作。

使用者加入

當使用者客戶端連接到遊戲時,Players.PlayerAdded 事件會觸發並傳遞加入的使用者的 Player 物件;您可以使用這個物件來執行多種目的,例如從數據存儲中加載 使用者數據 或將玩家分配到 隊伍。

例如,當使用者加入遊戲時,使用 PlayerAdded 事件在 Script 中檢索存儲在數據存儲中的使用者數據,根據他們的使用者 ID:

Script in ServerScriptService
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Players.PlayerAdded:Connect(function(player)
local userId = player.UserId
-- 讀取數據存儲鍵
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- 對 currentData 執行進一步操作
end)

角色生成

默認情況下,使用者的 Player.Character 模型代表他們的平台化身,並且 Players.CharacterAutoLoads 為 true,這意味著當使用者加入遊戲時,角色模型會自動生成。

當使用者的 Player.Character 生成時,Scripts 和 LocalScripts 在 StarterCharacterScripts 中會克隆到角色模型中,並觸發 Player.CharacterAdded 事件。這個事件將新的角色模型傳遞給其監聽者,您可以使用它來查找角色的 Humanoid 物件並修改其行為。例如,您可以使用 Humanoid:ApplyDescription() 來更改化身的服裝。

角色消失

當玩家的 Humanoid 死亡時,伺服器會在 Players.RespawnTime 指定的時間後自動移除角色模型。然後,您可以使用 Player.CharacterRemoving 事件來重置其他物件或更新與角色相關的數據。

使用者離開

當使用者客戶端從遊戲中斷開連接時,伺服器會銷毀其在 Players 服務中的相關 Player 物件。此時,Players.PlayerRemoving 事件會觸發並傳遞斷開連接的使用者的 Player 物件。您可以使用這個物件來執行多種目的,例如保存使用者數據、從計分板中移除玩家統計數據或銷毀玩家創建的模型。

以下示例 Script 監聽 PlayerRemoving 事件,並嘗試在數據存儲中根據其使用者 ID 保存使用者的數據:

Script in ServerScriptService
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Players.PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- 獲取玩家在遊戲中的數據狀態
local currentData = getCurrentData(player)
-- 保存到數據存儲
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)

容器

每個表示使用者客戶端的 Player 物件存儲幾個重要的容器:Backpack、StarterGear、PlayerGui 和 PlayerScripts。在遊戲運行時,"編輯" 數據模型中的幾個容器會將其內容複製到這些 Player 容器中,包括 StarterGui 到 PlayerGui、StarterPack 到 Backpack 和 StarterPlayerScripts 到 PlayerScripts。

一個圖示,映射 '編輯' 和 '運行時' 數據模型之間的物件。

Tool 物件在 Backpack 中構成玩家的庫存,並顯示為螢幕底部的圖示按鈕。請參見 遊戲內工具 獲取更多資訊。

如上所示,StarterPack 的內容和玩家的 StarterGear 在玩家的 Character 生成時會克隆到 Backpack 中。當角色死亡時,客戶端會銷毀 Backpack 並用新的背包替換它。

要禁用默認的 Roblox 庫存 GUI 並用您自己的替換,請在 LocalScript 中調用 StarterGui:SetCoreGuiEnabled(),如 禁用默認 UI 所述。

禁止使用者

為了確保您的遊戲中的文明和公平競爭,您可以禁止違反規則或社區指導方針的使用者。您可以修改禁止的持續時間、禁止消息,甚至將禁止擴展到潛在的替代帳戶。在使用此功能時,您必須遵循禁止的 指導方針 和 消息。

您有幾個選項來處理禁止:

設備封鎖

除了禁止帳戶外,Players:BanAsync() 還通過其配置表中的 ApplyDeviceBlock 欄位支持 設備封鎖。當您禁止一個當前連接到您的遊戲的使用者,並將 ApplyDeviceBlock 設置為 true 時,與該使用者相關的設備也會被封鎖,無法在 24 小時內重新加入。此選項增加了對禁止逃避的摩擦;被禁止的玩家無法立即從同一設備上的新帳戶重新加入遊戲。

  • 設備封鎖目前僅適用於桌面玩家(Windows 和 macOS)。它不適用於移動設備或控制台。
  • 設備封鎖不會作為禁止傳播到使用該設備的任何其他帳戶。
  • 在受影響的使用者上調用解除禁止 API 會立即移除與該使用者的設備相關的任何活動設備封鎖,允許他們重新加入遊戲。

禁止指導方針

在您的遊戲中實施禁止時,請遵循以下指導方針:

  • 遊戲規則不得與 Roblox 的 社區標準 和 使用條款 相矛盾。例如,您不能創建排除某人的遊戲規則,因為這違反了 Roblox 的歧視、侮辱和仇恨言論政策。
  • 創作者必須在所有使用者可訪問的地方清楚地說明他們的遊戲規則。
  • 創作者必須公平地應用他們的遊戲規則,而不是隨意針對某些使用者。
  • 如果使用者認為他們的禁止是錯誤的,可以直接向創作者提出上訴。除非使用者認為創作者的遊戲規則或執行其規則的方式違反了 社區標準,否則 Roblox 不會調解這些上訴。
  • 如果有理由相信創作者的遊戲規則或執行其規則的方式違反了 社區標準,Roblox 可以對遊戲進行管理。

消息指導方針

當使用者被禁止時,他們會收到一個錯誤模態,顯示禁止的長度和原因等信息。在經過文本過濾的消息中,您可以包含額外的信息,例如上訴或聯繫信息,只要您符合 Roblox 的 社區標準。

例如,在您的禁止消息中,您可以提及品牌名稱和平台:

  • "訪問我群組/遊戲頁面的 Discord"
  • "在 Twitter 或 X 上給我發消息"

在此消息字段中不允許提及個人信息或直接鏈接。這包括發佈特定的使用者名稱或處理,或提供直接鏈接到 Discord 伺服器或 X 帳戶。

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。