用户和玩家

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

当 Roblox 用户加入游戏时,他们在 DataModel 中被表示为 Player。这个 Player 对象包含有关用户的信息,这些信息在游戏之间是通用的,例如他们的用户名、好友列表和保存的 头像角色,以及影响用户在游戏中加入和离开的 生命周期 的属性、方法和事件。每个 Player 对象还包含四个重要的 容器,您可以使用这些容器来定制用户的体验:BackpackStarterGearPlayerGuiPlayerScripts

每个 Player 还公开一个 Player.User 属性,这是一个 User 值,表示玩家在当前游戏中的域范围身份。有关用户识别如何工作的更多信息,包括域范围用户 ID 和 User 类型,请参见 用户和域范围用户 ID

生命周期

Players 服务包含游戏中的所有 Player 实例。客户端和服务器端脚本都可以连接到 Players.PlayerAddedPlayers.PlayerRemoved 事件,以响应 Player 对象的生命周期执行操作。脚本还可以连接到 Player.CharacterAddedPlayer.CharacterRemoving 事件,以在角色生成或消失时执行与游戏相关的操作。

用户加入

当用户客户端连接到游戏时,Players.PlayerAdded 事件触发,并传递加入的用户的 Player 对象;您可以使用此对象执行多种操作,例如从数据存储加载 用户数据 或将玩家分配到 团队

例如,要在用户加入游戏时加载用户的数据,可以在 Script 中使用 PlayerAdded 事件来检索存储在数据存储中的用户 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.CharacterAutoLoadstrue,这意味着角色模型在用户加入游戏时会自动生成。

当用户的 Player.Character 生成时,ScriptsLocalScriptsStarterCharacterScripts 中克隆到角色模型中,并触发 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 对象存储几个重要的容器:BackpackStarterGearPlayerGuiPlayerScripts。在游戏运行时,"编辑" 数据模型中的几个容器将其内容复制到这些 Player 容器中,包括 StarterGuiPlayerGuiStarterPackBackpackStarterPlayerScriptsPlayerScripts

一个图示,映射了 '编辑' 和 '运行时' 数据模型之间的对象。

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 是我们在美国及其他国家或地区的注册与未注册商标。