當 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:
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 保存使用者的數據:
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 所述。
禁止使用者
為了確保您的遊戲中的文明和公平競爭,您可以禁止違反規則或社區指導方針的使用者。您可以修改禁止的持續時間、禁止消息,甚至將禁止擴展到潛在的替代帳戶。在使用此功能時,您必須遵循禁止的 指導方針 和 消息。
您有幾個選項來處理禁止:
- 每個遊戲頁面在 Creator Hub 上都有一個 禁止 儀表板。
- 有關引擎 API 的程式化使用,請參見 Players:BanAsync()。
- 有關 Open Cloud,請參見 禁止和封鎖。
設備封鎖
除了禁止帳戶外,Players:BanAsync() 還通過其配置表中的 ApplyDeviceBlock 欄位支持 設備封鎖。當您禁止一個當前連接到您的遊戲的使用者,並將 ApplyDeviceBlock 設置為 true 時,與該使用者相關的設備也會被封鎖,無法在 24 小時內重新加入。此選項增加了對禁止逃避的摩擦;被禁止的玩家無法立即從同一設備上的新帳戶重新加入遊戲。
- 設備封鎖目前僅適用於桌面玩家(Windows 和 macOS)。它不適用於移動設備或控制台。
- 設備封鎖不會作為禁止傳播到使用該設備的任何其他帳戶。
- 在受影響的使用者上調用解除禁止 API 會立即移除與該使用者的設備相關的任何活動設備封鎖,允許他們重新加入遊戲。
禁止指導方針
在您的遊戲中實施禁止時,請遵循以下指導方針:
- 創作者必須在所有使用者可訪問的地方清楚地說明他們的遊戲規則。
- 創作者必須公平地應用他們的遊戲規則,而不是隨意針對某些使用者。
- 如果使用者認為他們的禁止是錯誤的,可以直接向創作者提出上訴。除非使用者認為創作者的遊戲規則或執行其規則的方式違反了 社區標準,否則 Roblox 不會調解這些上訴。
- 如果有理由相信創作者的遊戲規則或執行其規則的方式違反了 社區標準,Roblox 可以對遊戲進行管理。
消息指導方針
當使用者被禁止時,他們會收到一個錯誤模態,顯示禁止的長度和原因等信息。在經過文本過濾的消息中,您可以包含額外的信息,例如上訴或聯繫信息,只要您符合 Roblox 的 社區標準。
例如,在您的禁止消息中,您可以提及品牌名稱和平台:
- "訪問我群組/遊戲頁面的 Discord"
- "在 Twitter 或 X 上給我發消息"
在此消息字段中不允許提及個人信息或直接鏈接。這包括發佈特定的使用者名稱或處理,或提供直接鏈接到 Discord 伺服器或 X 帳戶。