Benutzer und domänenspezifische Benutzer-IDs

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

Roblox weist jedem Benutzer eine eindeutige domänenspezifische Benutzer-ID pro Spiel oder App zu, mit denen sie interagieren. Diese Seite erklärt, wie die domänenspezifische Identifizierung funktioniert und wie Sie den User-Typ in Ihrem Spielcode verwenden.

Die folgenden Konzepte sind zentral für die Benutzeridentifizierung:

KonzeptBeschreibung
BenutzerEin dauerhaftes Konto auf Roblox.
SpielerDie Darstellung eines Benutzers im Datenmodell eines laufenden Spiels (siehe Spieler).
User DatentypEin Datentyp, der die Identität eines Benutzers innerhalb einer bestimmten Domäne darstellt. Dies ist der Standardbezeichner zur Referenzierung von Benutzern im Spielcode.
Domänenspezifische Benutzer-IDEin numerischer Bezeichner, der einen Benutzer innerhalb einer bestimmten Domäne eindeutig identifiziert. Diese ID ist in jedem Spiel und jeder App unterschiedlich.

Domänenspezifische Benutzer-IDs

Eine domänenspezifische Benutzer-ID ist ein eindeutiger Bezeichner, der einem Benutzer innerhalb eines bestimmten Spiels oder Apps zugewiesen wird. Im Gegensatz zu einer globalen Benutzer-ID ist eine domänenspezifische Benutzer-ID nur innerhalb der Domäne bedeutungsvoll, die sie ausgegeben hat. Daher hat derselbe Benutzer in jedem Spiel oder jeder App, mit der er interagiert, eine andere domänenspezifische Benutzer-ID. Spieler, die Ihrem Spiel vor dem Rollout der spezifischen ID beigetreten sind, behalten ihre ursprüngliche globale Benutzer-ID in diesem Spiel (siehe Rückkehrende Spieler).

Domänentypen werden durch Enum.DomainType dargestellt:

DomänentypGeltend fürBeispiel
Enum.DomainType.EXPERIENCEEin spezifisches Spiel (Universum)Die ID eines Spielers in Ihrem Spiel
Enum.DomainType.OAUTHEine spezifische OAuth-AnwendungDie ID eines Benutzers in Ihrem externen Tool

Funktionsweise der domänenspezifischen IDs

Wenn ein Spieler Ihr Spiel betritt, erhält er eine domänenspezifische Benutzer-ID, die einzigartig für dieses Spiel ist. Derselbe Spieler, der ein anderes Spiel betritt, erhält eine andere domänenspezifische Benutzer-ID. Das bedeutet:

  • Domänenspezifische Benutzer-IDs sind Ganzzahlen, ähnlich wie bestehende globale Benutzer-IDs.
  • Eine domänenspezifische Benutzer-ID kollidiert nicht mit einer bestehenden globalen Benutzer-ID.
  • Der gleiche numerische Wert kann in verschiedenen Domänen für verschiedene Benutzer erscheinen. Der eindeutige Schlüssel ist die Kombination aus Domänentyp, Domänen-ID und domänenspezifischer Benutzer-ID.

Beispielszenario

Das folgende Beispiel zeigt, wie verschiedene Spiele dasselbe Benutzerkonto referenzieren:

SzenarioBenutzerkontextBenutzer-ID, die vom Spiel gesehen wird
Benutzer verbindet sich mit Spiel ARückkehrender Spieler (vor dem Rollout der spezifischen IDs besucht)123 (globale ID, unverändert)
Benutzer verbindet sich mit Spiel BErster Besuch nach dem Rollout der spezifischen ID500789 (domänenspezifische Benutzer-ID für Spiel B)
Benutzer verbindet sich mit Spiel CErster Besuch nach dem Rollout der spezifischen ID302441 (domänenspezifische Benutzer-ID für Spiel C)

Rückkehrende Spieler

Wenn ein Spieler Ihrem Spiel bereits vor dem Rollout der spezifischen Benutzer-ID beigetreten ist, behält er seine ursprüngliche globale Benutzer-ID in diesem Spiel. Dies stellt sicher, dass bestehende Datenspeicher-Schlüssel, Bestenlisten und Inventare weiterhin ohne Änderungen funktionieren.

Arbeiten mit dem Benutzertyp

User ist der Standardweg, um Benutzer im Spielcode zu identifizieren. Ein User-Wert trägt die domänenspezifische Benutzer-ID zusammen mit dem Domänentyp und der Domänen-ID, sodass der Identitätskontext immer mit dem Bezeichner verknüpft ist. Weitere Einzelheiten zur API finden Sie im User-Referenz.

Einen Benutzer von einem Spieler erhalten

Der Hauptweg, 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("Domänenbenutzer-ID:", user.Id)
print("Domänentyp:", user.DomainType)
print("Domänen-ID:", user.DomainId)
end)

Einen Benutzer aus einer ID erstellen

Um einen User aus einer bekannten Benutzer-ID im aktuellen Spiel zu erstellen, verwenden Sie User.fromId():


local user = User.fromId(knownUserId)

Verwendung von User mit Engine-APIs

Engine-APIs, die einen Benutzer-ID-Parameter akzeptieren, akzeptieren auch User-Werte direkt. Es wird empfohlen, User zu verwenden:


-- 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 User umgewandelt.

Engine-APIs, die Benutzer-IDs zurückgeben

Engine-APIs, die numerische Benutzer-IDs zurückgeben, verwenden weiterhin dieselben Feldnamen und -typen. Jede zurückgegebene ID ist entweder eine globale ID oder eine domänenspezifische Benutzer-ID, je nachdem, ob der Benutzer dem Spiel vor oder nach dem Rollout der spezifischen ID beigetreten ist:

  • Rückkehrende Spieler (zuerst beigetreten vor dem Rollout der spezifischen ID) — die API gibt die globale Benutzer-ID des Benutzers zurück.
  • Neue Spieler (zuerst beigetreten nach dem Rollout der spezifischen ID) — die API gibt die domänenspezifische Benutzer-ID des Benutzers zurück.

Sowohl globale als auch domänenspezifische Benutzer-IDs sind Standardganzzahlen, die nicht kollidieren, sodass bestehender Code, der diese numerischen Felder liest, weiterhin funktioniert.

Speicherung der Benutzeridentität

Für Datenspeicher-Schlüssel innerhalb eines einzelnen Spiels verwenden Sie user.Id direkt:


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

Für Werte, die möglicherweise von anderen Systemen gelesen werden oder den vollständigen Domänenkontext erfordern, serialisieren Sie den User mit ToString():


local encoded = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encoded)
-- Später, von der Zeichenfolge wiederherstellen
local user = User.fromString(encoded)

Weitere Einzelheiten zu den Garantien der Serialisierung finden Sie in der User-Referenz.

Best Practices

  • Verwenden Sie Player.User als Standardbezeichner in neuem Code.
  • Verwenden Sie ToString() und fromString(), wenn Sie einen User-Wert speichern oder übertragen.
  • Verwenden Sie keine numerische Benutzer-ID aus einer Domäne, um einen Benutzer in einer anderen Domäne zu identifizieren.

Wann User oder Player verwenden

  • Verwenden Sie Player für serverseitige Aktionen: Charakterbewegungen, GUI, Teleportation, Chat, Inventar.
  • Verwenden Sie User für Identitäten, die über eine Sitzung hinaus bestehen: Datenspeicher, Open Cloud-Tools, domänenü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.