Benutzer und spezifische Benutzer-IDs

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Roblox stellt für jeden Benutzer in jedem Spiel, jeder Gruppe oder App eine effektive Benutzer-ID bereit. Abhängig von der Historie des Benutzers mit dieser Domain ist ihre effektive Benutzer-ID entweder ihre globale Benutzer-ID oder eine spezifische Benutzer-ID. Diese Seite erklärt, wie effektive Benutzer-IDs funktionieren und wie Sie den User-Typ in Ihrem Spielcode verwenden.

Die folgenden Konzepte sind zentral für die Benutzeridentifikation:

KonzeptBeschreibung
BenutzerEin persistentes Konto auf Roblox.
SpielerDie Darstellung eines Benutzers innerhalb des Datenmodells eines laufenden Spiels (siehe Spieler).
User DatentypEin Datentyp, der die effektive Benutzer-ID eines Benutzers und den Kontext der Domain trägt. Dies ist der Standardbezeichner für die Referenzierung von Benutzern im Spielcode.
Globale Benutzer-IDDie plattformweite Benutzer-ID, die Roblox jedem Konto zuweist. Sie ist global einzigartig auf Roblox.
Spezifische Benutzer-IDEine Benutzer-ID, die innerhalb einer bestimmten Domain zugewiesen wird. Die spezifischen Benutzer-IDs eines Benutzers sind in jedem Spiel, jeder Gruppe oder App unterschiedlich.
Effektive Benutzer-IDDie einzige Benutzer-ID, die Roblox für einen Benutzer innerhalb einer Domain bereitstellt.
Vor-Rollout-BenutzerEin Benutzer, der zuerst mit einer Domain interagiert hat, bevor die spezifische Benutzer-ID eingeführt wurde. In dieser Domain bleibt ihre effektive Benutzer-ID ihre globale Benutzer-ID.
Nach-Rollout-BenutzerEin Benutzer, der zuerst mit einer Domain interagiert hat, nachdem die spezifische Benutzer-ID eingeführt wurde. In dieser Domain ist ihre effektive Benutzer-ID eine spezifische Benutzer-ID.

Effektive Benutzer-IDs und Domains

Jeder Benutzer hat eine effektive Benutzer-ID innerhalb eines bestimmten Spiels, Gruppe oder App. Roblox stellt keine separaten globalen und spezifischen Benutzer-IDs für denselben Benutzer in dieser Domain bereit:

  • Ein Vor-Rollout-Benutzer hat seine globale Benutzer-ID als seine effektive Benutzer-ID.
  • Ein Nach-Rollout-Benutzer hat eine spezifische Benutzer-ID als seine effektive Benutzer-ID. Diese ID ist nur innerhalb dieser Domain von Bedeutung.

Im Spielcode geben Player.UserId und Player.User.Id beide diese effektive Benutzer-ID zurück und haben immer denselben numerischen Wert (Player.User.Id entspricht Player.UserId), sodass Ihr Code keine Verzweigungslogik benötigt, um zwischen ihnen zu wählen.

Roblox schränkt die Benutzeridentität auf drei Arten von Domains ein:

DomainBezogen aufBeispiel
Erfahrung (Enum.DomainType.EXPERIENCE)Eine spezifische ErfahrungDie ID eines Spielers in Ihrer Erfahrung
GruppeEine spezifische Roblox-Gruppe (Gemeinschaft)Die ID eines Mitglieds in Ihrer Gruppe
OAuth-App (Enum.DomainType.OAUTH)Eine spezifische OAuth-AnwendungDie ID eines Benutzers in Ihrem externen Tool

Wie effektive Benutzer-IDs funktionieren

Wenn ein Spieler Ihrem Spiel beitritt, hat er eine effektive Benutzer-ID für dieses Spiel. Die effektive Benutzer-ID eines Nach-Rollout-Benutzers ist eine spezifische Benutzer-ID, die einzigartig für dieses Spiel ist. Sie erhalten eine andere spezifische Benutzer-ID in jedem anderen Spiel, Gruppe oder App, in der sie ebenfalls ein Nach-Rollout-Benutzer sind. Das bedeutet:

  • Effektive Benutzer-IDs sind Ganzzahlen, unabhängig davon, ob sie global oder spezifisch sind.
  • Effektive Benutzer-IDs sind über Sitzungen innerhalb derselben Domain stabil.
  • Eine spezifische Benutzer-ID kollidiert nicht mit einer bestehenden globalen Benutzer-ID.
  • Der gleiche numerische Wert kann in verschiedenen Domains für verschiedene Benutzer erscheinen. Der einzigartige Schlüssel ist die Kombination aus der Domain (Domain-Typ und Domain-ID) und der effektiven Benutzer-ID.

Beispiel-Szenario

Das folgende Beispiel zeigt, wie verschiedene Spiele denselben Benutzer referenzieren:

SzenarioBenutzerkontextEffektive Benutzer-ID, die vom Spiel gesehen wird
Benutzer verbindet sich mit Spiel AVor-Rollout-Benutzer123 (globale Benutzer-ID, unverändert)
Benutzer verbindet sich mit Spiel BNach-Rollout-Benutzer500789 (spezifische Benutzer-ID für Spiel B)
Benutzer verbindet sich mit Spiel CNach-Rollout-Benutzer302441 (spezifische Benutzer-ID für Spiel C)

Vor-Rollout-Benutzer

Wenn ein Spieler ein Vor-Rollout-Benutzer in Ihrem Spiel ist, bleibt seine effektive Benutzer-ID seine globale Benutzer-ID in diesem Spiel. Sowohl Player.UserId als auch Player.User.Id geben diese globale Benutzer-ID zurück. Roblox stellt keine zweite Benutzer-ID für den Spieler in diesem Spiel bereit. Dies stellt sicher, dass bestehende Datenspeicher-Schlüssel, Bestenlisten und Inventare weiterhin ohne Änderungen funktionieren.

Gruppen-Domain

Jede Roblox-Gruppe ist ihre eigene Domain. Ein Benutzer hat eine effektive Benutzer-ID innerhalb einer Gruppe, die von seiner effektiven Benutzer-ID in jedem Spiel oder OAuth-Anwendung getrennt ist:

Arbeiten mit dem Benutzer-Typ

User ist der Standardweg, um Benutzer im Spielcode zu identifizieren. Ein User-Wert trägt die effektive Benutzer-ID zusammen mit dem Domain-Typ und der Domain-ID, sodass der Identitätskontext immer mit dem Bezeichner übertragen wird. Für vollständige API-Details siehe das User-Referenzdokument.

Einen Benutzer von einem Spieler erhalten

Der primäre Weg, um einen User zu erhalten, ist von einem verbundenen Player über Player.User:

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local user = player.User
print("Effektive Benutzer-ID:", user.Id) -- Entspricht immer player.UserId
print("Domain-Typ:", user.DomainType)
print("Domain-ID:", user.DomainId)
end)

Einen Benutzer aus einer ID erstellen

Um einen User aus einer bekannten effektiven Benutzer-ID innerhalb des aktuellen Spiels zu erstellen, verwenden Sie User.fromId():

local user = User.fromId(knownUserId)

Verwendung von Benutzer mit Engine-APIs

Engine-APIs, die einen Benutzer-ID-Parameter akzeptieren, akzeptieren auch direkt User-Werte. Die Verwendung von User wird empfohlen:

-- Beide Formen funktionieren:
BadgeService:AwardBadge(player.User, badgeId) -- Empfohlen
BadgeService:AwardBadge(player.UserId, badgeId)
-- Beide Formen funktionieren:
local target = Players:GetPlayerByUserId(player.User) -- Empfohlen
local target = Players:GetPlayerByUserId(someUserId)

Wenn eine numerische Benutzer-ID an eine Engine-API übergeben wird, die Benutzer-IDs akzeptiert, wird sie intern automatisch in ein User gewickelt.

Engine-APIs, die Benutzer-IDs zurückgeben

Engine-APIs, die numerische Benutzer-IDs zurückgeben, geben die effektive Benutzer-ID des Benutzers zurück:

  • Vor-Rollout-Benutzer — die API gibt die globale Benutzer-ID des Benutzers zurück.
  • Nach-Rollout-Benutzer — die API gibt die spezifische Benutzer-ID des Benutzers zurück.

Player.UserId, Player.User.Id und andere Engine-APIs geben alle dieselbe effektive Benutzer-ID für einen Benutzer in Ihrem Spiel zurück, sodass bestehender Code, der numerische Benutzer-ID-Felder liest, weiterhin ohne Verzweigungslogik funktioniert.

Open Cloud-Anfragen und -Antworten verwenden dieselbe effektive Benutzer-ID für die Ziel-Domain. Sie geben keine zweite Benutzer-ID für denselben Benutzer in dieser Domain preis.

Speicherung der Benutzeridentität

Verwenden Sie eine numerische effektive Benutzer-ID nur, um einen Benutzer innerhalb einer einzigen Domain zu identifizieren. Ein Datenspeicher-Schlüssel in einem Spiel kann user.Id direkt verwenden:

local key = ("player_%d"):format(player.User.Id)
PlayerDataStore:SetAsync(key, data)

Wenn eine andere Domain die gespeicherte Identität liest, wie eine OAuth-App, die Benutzer moderiert, speichern Sie den String von ToString(). Der String kodiert den Domain-Kontext zusammen mit der effektiven Benutzer-ID. Die Verwendung der Ganzzahl allein kann dazu führen, dass eine Aktion auf den falschen Benutzer angewendet wird, wenn dieselbe Zahl einen anderen Benutzer in einer anderen Domain identifiziert.

local encoded = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encoded)
-- Später aus dem String wiederherstellen
local user = User.fromString(encoded)

Für weitere Details zu den Garantien der Serialisierung siehe das User-Referenzdokument.

Best Practices

  • Verwenden Sie Player.User als Standardbezeichner in neuem Code.
  • Verwenden Sie die numerische effektive Benutzer-ID nur innerhalb einer einzigen Domain, wie Datenspeicher-Schlüssel für ein Spiel.
  • Verwenden Sie ToString() und fromString(), wenn eine andere Domain die gespeicherte Identität liest.

Wann Benutzer oder Spieler verwenden

  • Verwenden Sie Player für serverseitige Aktionen: Charakterbewegung, GUI, Teleportation, Chat, Inventar.
  • Verwenden Sie User für Identität, die über eine Sitzung hinausgeht: Datenspeicher, Open Cloud-Tools, spielübergreifende Referenzen.
©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.