Kullanıcılar ve alan kapsamlı kullanıcı kimlikleri

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Roblox, her kullanıcıya etkileşimde bulunduğu her oyun veya uygulama için benzersiz bir alan kapsamlı kullanıcı ID atar. Bu sayfa, alan kapsamlı tanımlamanın nasıl çalıştığını ve oyununuzun kodunda User türünü nasıl kullanacağınızı açıklar.

Kullanıcı tanımlamasında anahtar olan aşağıdaki kavramlar bulunmaktadır:

KavramAçıklama
KullanıcıRoblox'ta kalıcı bir hesap.
OyuncuÇalışan bir oyunun veri modelinde bir kullanıcının temsili (bkz. Oyuncular).
User veri türüBelirli bir alandaki bir kullanıcının kimliğini temsil eden bir veri türü. Bu, oyun kodunda kullanıcıları referans almak için standart kimliktir.
Alan kapsamlı kullanıcı IDBelirli bir alan içinde bir kullanıcıyı benzersiz şekilde tanımlayan sayısal bir kimlik. Bu kimlik her oyun ve uygulamada farklıdır.

Alan kapsamlı kullanıcı ID'leri

Bir alan kapsamlı kullanıcı ID belirli bir oyun veya uygulama içinde bir kullanıcıya atanan benzersiz bir kimliktir. Global bir kullanıcı ID'sinin aksine, bir alan kapsamlı kullanıcı ID sadece onu veren alanda anlamlıdır, bu nedenle aynı kullanıcı her etkileşimde bulunduğu oyunda veya uygulamada farklı bir alan kapsamlı kullanıcı ID'sine sahiptir. Scoped ID dağıtımından önce oyununuza katılan oyuncular, o oyundaki orijinal global kullanıcı ID'lerini korurlar (bkz. Dönen oyuncular).

Alan türleri Enum.DomainType ile gösterilmektedir:

Alan türüKapsama alanıÖrnek
Enum.DomainType.EXPERIENCEBelirli bir oyun (evren)Oyundaki bir oyuncunun ID'si
Enum.DomainType.OAUTHBelirli bir OAuth uygulamasıDış aracınızdaki bir kullanıcının ID'si

Alan kapsamlı ID'lerin nasıl çalıştığı

Bir oyuncu oyununuza katıldığında, o oyuna özgü benzersiz bir alan kapsamlı kullanıcı ID'si alır. Farklı bir oyuna katılan aynı oyuncu, farklı bir alan kapsamlı kullanıcı ID'si alır. Bu, şunları ifade eder:

  • Alan kapsamlı kullanıcı ID'leri, mevcut global kullanıcı ID'lerine benzer şekilde tamsayılardır.
  • Bir alan kapsamlı kullanıcı ID, mevcut herhangi bir global kullanıcı ID'si ile çakışmaz.
  • Aynı sayısal değer, farklı kullanıcılar için farklı alanlarda görünebilir. Benzersiz anahtar, alan türü, alan ID'si ve alan kapsamlı kullanıcı ID'sinin birleşimidir.

Örnek senaryo

Aşağıdaki örnek, farklı oyunların aynı kullanıcıyı nasıl referans aldığını gösterir:

SenaryoKullanıcı bağlamıOyun tarafından görülen kullanıcı ID'si
Kullanıcı Oyun A'ya bağlanıyorDönen oyuncu (kapsamlı ID'lerden önce ziyaret etti)123 (global ID, değişmedi)
Kullanıcı Oyun B'ye bağlanıyorKapsamlı ID dağıtımından sonraki ilk ziyaret500789 (Oyun B için alan kapsamlı kullanıcı ID'si)
Kullanıcı Oyun C'ye bağlanıyorKapsamlı ID dağıtımından sonraki ilk ziyaret302441 (Oyun C için alan kapsamlı kullanıcı ID'si)

Dönen oyuncular

Eğer bir oyuncu, kapsamlı kullanıcı ID dağıtımından önce oyununuza katıldıysa, o oyunda orijinal global kullanıcı ID'sini korur. Bu, mevcut veri mağazası anahtarlarının, sıralama tablolarının ve envanterlerin herhangi bir değişiklik olmadan çalışmaya devam etmesini sağlar.

Kullanıcı Türü ile Çalışmak

User, oyun kodunda kullanıcıları belirlemenin standart yoludur. Bir User değeri, alan kapsamlı kullanıcı ID'sini, alan türünü ve alan ID'sini taşır, böylece kimlik bağlamı her zaman tanımlayıcı ile birlikte seyahat eder. Tam API ayrıntıları için User referansına bakın.

Bir Oyuncudan Kullanıcı Almak

User'ı elde etmenin ana yolu, bağlı bir Player üzerinden Player.User'ı kullanmaktır:


local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local user = player.User
print("Alan kullanıcı ID'si:", user.Id)
print("Alan türü:", user.DomainType)
print("Alan ID'si:", user.DomainId)
end)

Bir ID'den Kullanıcı Oluşturmak

Mevcut oyundaki bilinen bir kullanıcı ID'sinden User oluşturmak için User.fromId()'ı kullanın:


local user = User.fromId(knownUserId)

Kullanıcıyı motor API'leri ile kullanma

Kullanıcı ID'si parametresi kabul eden motor API'leri, User değerlerini doğrudan kabul eder. User kullanmanız önerilir:


-- Her iki form da çalışır:
BadgeService:AwardBadge(player.User, badgeId) -- Önerilen
BadgeService:AwardBadge(player.UserId, badgeId)

-- Her iki form da çalışır:
local target = Players:GetPlayerByUserId(player.User) -- Önerilen
local target = Players:GetPlayerByUserId(someUserId)

Sayısal bir kullanıcı ID'si, kullanıcı ID'lerini kabul eden bir motor API'sine geçirildiğinde, otomatik olarak dahili olarak bir User içerisine sarılır.

Kullanıcı ID'lerini dönen motor API'leri

Kullanıcı ID'si dönen motor API'leri aynı alan adlarını ve türlerini kullanmaya devam eder. Her dönen ID, oyuncunun oyuna kapsamlı ID dağıtımından önce veya sonra katılıp katılmadığına bağlı olarak ya bir global ID ya da bir alan kapsamlı kullanıcı ID'sidir:

  • Dönen oyuncular (önceki katılımlar kapsamlı ID lansmanından önce) — API, kullanıcının global kullanıcı ID'sini döner.
  • Yeni oyuncular (ilk katılım kapsamlı ID lansmanından sonra) — API, kullanıcının alan kapsamlı kullanıcı ID'sini döner.

Hem global hem de alan kapsamlı kullanıcı ID'leri standart tamsayılardır ve çakışmaz, bu nedenle bu sayısal alanları okuyan mevcut kod doğru çalışmaya devam eder.

Kullanıcı kimliğini saklamak

Tek bir oyundaki veri mağazası anahtarları için doğrudan user.Id kullanın:


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

Diğer sistemler tarafından okunabilecek veya tam alan bağlamına ihtiyaç duyacak değerler için, UserToString() ile serileştirin:


local encoded = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encoded)
-- Daha sonra, string'den geri yükleyin
local user = User.fromString(encoded)

Serileştirme garantileri hakkında daha fazla detay için User referansına bakın.

En iyi uygulamalar

  • Yeni kodda standart tanımlayıcı olarak Player.User kullanın.
  • ToString() ve fromString()'ı bir User değerini kalıcı hale getirirken veya iletirken kullanın.
  • Bir alan içindeki bir kullanıcıyı tanımlamak için bir alanda sayısal kullanıcı ID'si kullanmayın.

Kullanıcı veya Oyuncu Ne Zaman Kullanılmalı

  • Sunucu içi eylemler için Player kullanın: karakter hareketi, GUI, teleport, sohbet, envanter.
  • Oturumu aşan kimlikler için User kullanın: veri mağazaları, Açık Bulut araçları, çapraz oyun referansları.
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.