Użytkownicy i identyfikatory użytkowników w domenie

*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 w domenie w zależności od doświadczenia lub aplikacji, z którą wchodzi w interakcję. Ta strona wyjaśnia, jak działa identyfikacja w domenie oraz jak używać typu User w kodzie twojego doświadczenia.

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

PojęcieOpis
UżytkownikPermanentne konto na Robloxie.
GraczReprezentacja użytkownika w modelu danych działającego doświadczenia (zobacz Gracze).
typ danych UserTyp danych reprezentujący tożsamość użytkownika w konkretnej domenie. Jest to standardowy identyfikator do odnoszenia się do użytkowników w kodzie doświadczenia.
Identyfikator użytkownika w domenieNumeryczny identyfikator, który unikalnie identyfikuje użytkownika w konkretnej domenie. Ten identyfikator jest inny w każdym doświadczeniu i aplikacji.

Identyfikatory użytkowników w domenie

Identyfikator użytkownika w domenie to unikalny identyfikator przypisywany użytkownikowi w konkretnej doświadczeniu lub aplikacji. W odróżnieniu od globalnego identyfikatora użytkownika, identyfikator użytkownika w domenie ma znaczenie tylko w obrębie domeny, która go wydała, dlatego ten sam użytkownik ma inny identyfikator użytkownika w domenie w każdym doświadczeniu lub aplikacji, z którą wchodzi w interakcję. Gracze, którzy dołączyli do twojego doświadczenia przed wdrożeniem identyfikatora w domenie, zachowują swój pierwotny globalny identyfikator użytkownika w tym doświadczeniu (patrz Powracający gracze).

Typy domen są reprezentowane przez Enum.DomainType:

Typ domenyOgraniczone doPrzykład
Enum.DomainType.EXPERIENCEKonkretne doświadczenie (uniwersum)ID gracza w twoim doświadczeniu
Enum.DomainType.OAUTHKonkretna aplikacja OAuthID użytkownika w twoim narzędziu zewnętrznym

Jak działają identyfikatory w domenie

Gdy gracz dołącza do twojego doświadczenia, otrzymuje identyfikator użytkownika w domenie, który jest unikalny dla tego doświadczenia. Ten sam gracz, dołączając do innego doświadczenia, otrzymuje różny identyfikator użytkownika w domenie. Oznacza to:

  • Identyfikatory użytkowników w domenie są liczbami całkowitymi, podobnie jak istniejące globalne identyfikatory użytkowników.
  • Identyfikator użytkownika w domenie 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 oraz identyfikatora użytkownika w domenie.

Przykładowy scenariusz

Poniższy przykład ilustruje, jak różne doświadczenia odnoszą się do tego samego użytkownika:

ScenariuszKontekst użytkownikaID użytkownika widziane przez doświadczenie
Użytkownik łączy się z Doświadczeniem APowracający gracz (odwiedził wcześniej przed wprowadzeniem identyfikatorów w domenach)123 (globalny ID, bez zmian)
Użytkownik łączy się z Doświadczeniem BPierwsza wizyta po wprowadzeniu identyfikatora w domenie500789 (identyfikator użytkownika w domenie dla Doświadczenia B)
Użytkownik łączy się z Doświadczeniem CPierwsza wizyta po wprowadzeniu identyfikatora w domenie302441 (identyfikator użytkownika w domenie dla Doświadczenia C)

Powracający gracze

Jeśli gracz dołączył już do twojego doświadczenia przed wdrożeniem identyfikatora użytkownika w domenie, zachowuje swój pierwotny globalny identyfikator użytkownika w tym doświadczeniu. Zapewnia to, że istniejące klucze w pamięci danych, tablice wyników i inwentarze działają bez jakichkolwiek zmian.

Praca z typem Użytkownika

User jest standardowym sposobem identyfikacji użytkowników w kodzie doświadczenia. Wartość User zawiera identyfikator użytkownika w domenie razem z typem domeny i identyfikatorem domeny, więc kontekst tożsamości zawsze podróżuje wraz z identyfikatorem. Aby uzyskać pełne szczegóły API, zobacz dokumentację User.

Pobierz Użytkownika z Gracza

Podstawowym sposobem uzyskania User jest połączenie z Player za pomocą Player.User:


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

Skonstruuj Użytkownika z ID

Aby utworzyć User z znanego identyfikatora użytkownika w aktualnym doświadczeniu, 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, również akceptują 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)

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

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 jest identyfikatorem globalnym lub identyfikatorem użytkownika w domenie, w zależności od tego, czy użytkownik dołączył do doświadczenia przed czy po wdrożeniu identyfikatora w domenie:

  • Powracający gracze (po raz pierwszy dołączyli przed uruchomieniem identyfikatora w domenie) — API zwraca globalny identyfikator użytkownika.
  • Nowi gracze (po raz pierwszy dołączyli po uruchomieniu identyfikatora w domenie) — API zwraca identyfikator użytkownika w domenie.

Zarówno globalne, jak i identyfikatory użytkowników w domenie to standardowe liczby całkowite, które nie kolidują, więc istniejący kod, który odczytuje te pola numeryczne, nadal działa.

Przechowywanie tożsamości użytkownika

Dla kluczy w pamięci danych w jednym doświadczeniu 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 wymagają pełnego kontekstu domeny, serialized User za pomocą ToString():


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

Aby uzyskać więcej szczegółów 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ń na serwerze: ruch postaci, GUI, teleportacja, czat, inwentarz.
  • Używaj User dla tożsamości, która wykracza poza sesję: pamięci danych, narzędzi Open Cloud, odniesień między doświadczeniami.
©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.