Użytkownicy i identyfikatory użytkowników przypisanych do domeny

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Roblox przypisuje każdemu użytkownikowi unikalny identyfikator użytkownika przypisany do domeny dla każdej gry lub aplikacji, z którą wchodzi w interakcję. Ta strona wyjaśnia, jak działa identyfikacja przypisana do domeny oraz jak używać typu User w swoim kodzie gry.

Poniższe pojęcia są kluczowe dla identyfikacji użytkowników:

PojęcieOpis
UżytkownikTrwałe konto na Robloxie.
GraczReprezentacja użytkownika w modelu danych działającej gry (patrz Gracze).
Typ danych UserTyp danych reprezentujący tożsamość użytkownika w konkretnej domenie. To standardowy identyfikator do odniesienia się do użytkowników w kodzie gry.
Identyfikator użytkownika przypisany do domenyNumeryczny identyfikator, który unikalnie identyfikuje użytkownika w konkretnej domenie. Ten identyfikator różni się w każdej grze i aplikacji.

Identyfikatory użytkowników przypisanych do domeny

Identyfikator użytkownika przypisany do domeny to unikalny identyfikator przypisany do użytkownika w konkretnej grze lub aplikacji. W przeciwieństwie do globalnego identyfikatora użytkownika, identyfikator przypisany do domeny ma sens tylko w obrębie domeny, która go wydała, więc ten sam użytkownik ma inny identyfikator użytkownika przypisany do domeny w każdej grze lub aplikacji, w której wchodzi w interakcję. Gracze, którzy dołączyli do Twojej gry przed wprowadzeniem identyfikatorów przypisanych do domeny, zachowują swój pierwotny globalny identyfikator użytkownika w tej grze (patrz Powracający gracze).

Typy domen są reprezentowane przez Enum.DomainType:

Typ domenyPrzypisane doPrzykład
Enum.DomainType.EXPERIENCEKonkretna gra (wszechświat)ID gracza w Twojej grze
Enum.DomainType.OAUTHKonkretna aplikacja OAuthID użytkownika w Twoim narzędziu zewnętrznym

Jak działają identyfikatory przypisane do domeny

Kiedy gracz dołącza do Twojej gry, otrzymuje identyfikator użytkownika przypisany do domeny, który jest unikalny dla tej gry. Ten sam gracz dołączający do innej gry otrzymuje inny identyfikator użytkownika przypisany do domeny. Oznacza to:

  • Identyfikatory użytkowników przypisane do domeny są liczbami całkowitymi, podobnie jak istniejące globalne identyfikatory użytkowników.
  • Identyfikator użytkownika przypisany do domeny nie koliduje z żadnym istniejącym globalnym identyfikatorem użytkownika.
  • Ta sama wartość numeryczna może występować w różnych domenach dla różnych użytkowników. Unikalnym kluczem jest kombinacja typu domeny, identyfikatora domeny i identyfikatora użytkownika przypisanego do domeny.

Przykład scenariusza

Poniższy przykład pokazuje, jak różne gry odwołują się do tego samego użytkownika:

ScenariuszKontekst użytkownikaID użytkownika widziane przez grę
Użytkownik łączy się z Grą APowracający gracz (odwiedzał wcześniej przed wprowadzeniem identyfikatorów przypisanych)123 (globalny ID, niezmieniony)
Użytkownik łączy się z Grą BPierwsza wizyta po wprowadzeniu identyfikatorów przypisanych500789 (identyfikator użytkownika przypisany do Grzy B)
Użytkownik łączy się z Grą CPierwsza wizyta po wprowadzeniu identyfikatorów przypisanych302441 (identyfikator użytkownika przypisany do Grzy C)

Powracający gracze

Jeśli gracz dołączył do Twojej gry przed wprowadzeniem identyfikatorów użytkowników przypisanych, zachowuje swój oryginalny globalny identyfikator użytkownika w tej grze. Gwarantuje to, że istniejące klucze w magazynie danych, tablice liderów i inwentarze nadal będą działać bez żadnych zmian.

Praca z Typem Użytkownika

User to standardowy sposób identyfikacji użytkowników w kodzie gry. Wartość User przenosi identyfikator użytkownika przypisany do domeny wraz z typem domeny i identyfikatorem domeny, więc kontekst tożsamości zawsze podróżuje z identyfikatorem. Aby uzyskać pełne szczegóły API, zobacz dokumentację User.

Uzyskiwanie Użytkownika z Gracza

Podstawowym sposobem na uzyskanie User jest połączenie z Player przez Player.User:

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local user = player.User
print("Identyfikator użytkownika domeny:", user.Id)
print("Typ domeny:", user.DomainType)
print("ID domeny:", user.DomainId)
end)

Tworzenie Użytkownika z ID

Aby utworzyć User z znanego identyfikatora użytkownika w bieżącej grze, użyj User.fromId():

local user = User.fromId(knownUserId)

Używanie Użytkownika z API silnika

API silnika, które akceptują parametr identyfikatora użytkownika, akceptują również wartości User bezpośrednio. Zaleca się użycie User:

-- Obie formy działają:
BadgeService:AwardBadge(player.User, badgeId) -- Zalecane
BadgeService:AwardBadge(player.UserId, badgeId)
-- Obie formy działają:
local target = Players:GetPlayerByUserId(player.User) -- Zalecane
local target = Players:GetPlayerByUserId(someUserId)

Kiedy numeryczny identyfikator użytkownika jest przekazywany do API silnika, które akceptuje identyfikatory użytkowników, jest automatycznie opakowywany wewnętrznie w User.

API silnika, które zwracają identyfikatory użytkowników

API silnika, które zwracają numeryczne identyfikatory użytkowników, nadal używają tych samych nazw pól i typów. Każdy zwrócony identyfikator to albo globalny identyfikator, albo identyfikator użytkownika przypisany do domeny, w zależności od tego, czy użytkownik dołączył do gry przed czy po wprowadzeniu identyfikatorów przypisanych:

  • Powracający gracze (pierwsze połączenie przed wprowadzeniem identyfikatorów przypisanych) — API zwraca globalny identyfikator użytkownika.
  • Nowi gracze (pierwsze połączenie po wprowadzeniu identyfikatorów przypisanych) — API zwraca identyfikator użytkownika przypisany do domeny.

Zarówno globalne, jak i identyfikatory użytkowników przypisane do domen są standardowymi liczbami całkowitymi, które nie kolidują, więc istniejący kod, który odczytuje te numeryczne pola, nadal będzie działać.

Przechowywanie tożsamości użytkownika

Dla kluczy magazynu danych w jednej grze, użyj user.Id bezpośrednio:

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

Dla wartości, które mogą być odczytywane przez inne systemy lub potrzebują pełnego kontekstu domeny, serializuj User za pomocą ToString():

local encoded = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encoded)
-- Później, przywróć z ciągu
local user = User.fromString(encoded)

Aby uzyskać więcej informacji na temat gwarancji serializacji, zobacz dokumentację User.

Najlepsze praktyki

  • Używaj Player.User jako standardowego identyfikatora w nowym kodzie.
  • Używaj ToString() i fromString() podczas przechowywania lub przesyłania wartości User.
  • Nie używaj numerycznego identyfikatora użytkownika z jednej domeny do identyfikacji użytkownika w innej domenie.

Kiedy używać Użytkownika lub Gracza

  • Używaj Player do działań w serwerze: ruch postaci, GUI, teleportacja, czat, inwentarz.
  • Używaj User do tożsamości, która przetrwa sesję: magazyny danych, narzędzia Open Cloud, odniesienia między grami.
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.