Người dùng và ID người dùng theo miền

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Roblox phân bổ cho mỗi người dùng một ID người dùng theo miền duy nhất cho mỗi trò chơi hoặc ứng dụng mà họ tương tác. Trang này giải thích cách nhận diện người dùng theo miền hoạt động và cách sử dụng loại User trong mã trò chơi của bạn.

Các khái niệm sau là trung tâm trong việc xác định người dùng:

Khái niệmMô tả
Người dùngMột tài khoản kéo dài trên Roblox.
Người chơiĐại diện của một người dùng trong mô hình dữ liệu của trò chơi đang chạy (xem Người chơi).
Loại dữ liệu UserMột loại dữ liệu đại diện cho danh tính của người dùng trong một miền cụ thể. Đây là định danh chuẩn để tham chiếu đến người dùng trong mã trò chơi.
ID người dùng theo miềnMột định danh số xác định duy nhất một người dùng trong một miền cụ thể. Định danh này là khác nhau trong mỗi trò chơi và ứng dụng.

ID người dùng theo miền

Một ID người dùng theo miền là một định danh duy nhất được cấp cho một người dùng trong một trò chơi hoặc ứng dụng cụ thể. Khác với ID người dùng toàn cầu, ID người dùng theo miền chỉ có ý nghĩa trong miền đã phát hành nó, vì vậy cùng một người dùng có một ID người dùng theo miền khác nhau trong mỗi trò chơi hoặc ứng dụng mà họ tương tác. Những người chơi đã tham gia trò chơi của bạn trước khi triển khai ID theo miền sẽ giữ ID người dùng toàn cầu ban đầu của họ trong trò chơi đó (xem Người chơi quay lại).

Các loại miền được đại diện bởi Enum.DomainType:

Loại miềnGắn liền vớiVí dụ
Enum.DomainType.EXPERIENCEMột trò chơi cụ thể (vũ trụ)ID của một người chơi trong trò chơi của bạn
Enum.DomainType.OAUTHMột ứng dụng OAuth cụ thểID của một người dùng trong công cụ bên ngoài của bạn

Cách hoạt động của các ID theo miền

Khi một người chơi tham gia trò chơi của bạn, họ sẽ nhận được một ID người dùng theo miền duy nhất cho trò chơi đó. Cùng một người chơi tham gia vào một trò chơi khác sẽ nhận được một ID người dùng theo miền khác. Điều này có nghĩa là:

  • ID người dùng theo miền là các số nguyên, tương tự như ID người dùng toàn cầu hiện có.
  • Một ID người dùng theo miền không xung đột với bất kỳ ID người dùng toàn cầu nào hiện có.
  • Cùng một giá trị số có thể xuất hiện trong các miền khác nhau cho các người dùng khác nhau. Khóa duy nhất là sự kết hợp của loại miền, ID miền và ID người dùng theo miền.

Kịch bản ví dụ

Ví dụ sau đây minh họa cách các trò chơi khác nhau tham chiếu đến cùng một người dùng:

Kịch bảnBối cảnh người dùngID người dùng thấy bởi trò chơi
Người dùng kết nối với Trò chơi ANgười chơi quay lại (đã tham gia trước khi có ID theo miền)123 (ID toàn cầu, không thay đổi)
Người dùng kết nối với Trò chơi BTham gia lần đầu tiên sau khi triển khai ID theo miền500789 (ID người dùng theo miền cho Trò chơi B)
Người dùng kết nối với Trò chơi CTham gia lần đầu tiên sau khi triển khai ID theo miền302441 (ID người dùng theo miền cho Trò chơi C)

Người chơi quay lại

Nếu một người chơi đã tham gia trò chơi của bạn trước khi triển khai ID người dùng theo miền, họ sẽ giữ ID người dùng toàn cầu ban đầu của họ trong trò chơi đó. Điều này đảm bảo rằng các khóa dữ liệu hiện có, bảng xếp hạng và kho vật phẩm tiếp tục hoạt động mà không có bất kỳ thay đổi nào.

Làm việc với loại Người dùng

User là cách chuẩn để xác định người dùng trong mã trò chơi. Một giá trị User mang theo ID người dùng theo miền cùng với loại miền và ID miền, vì vậy ngữ cảnh danh tính luôn đi kèm với định danh. Để biết chi tiết đầy đủ về API, hãy xem tham chiếu User.

Lấy một Người dùng từ một Người chơi

Cách chính để có được một User là từ một Player kết nối qua Player.User:


local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local user = player.User
print("ID người dùng miền:", user.Id)
print("Loại miền:", user.DomainType)
print("ID miền:", user.DomainId)
end)

Xây dựng một Người dùng từ một ID

Để tạo một User từ một ID người dùng đã biết trong trò chơi hiện tại, hãy sử dụng User.fromId():


local user = User.fromId(knownUserId)

Sử dụng Người dùng với API của engine

API của engine chấp nhận tham số ID người dùng cũng chấp nhận các giá trị User trực tiếp. Việc sử dụng User được khuyến nghị:


-- Cả hai hình thức đều hoạt động:
BadgeService:AwardBadge(player.User, badgeId) -- Khuyến nghị
BadgeService:AwardBadge(player.UserId, badgeId)

-- Cả hai hình thức đều hoạt động:
local target = Players:GetPlayerByUserId(player.User) -- Khuyến nghị
local target = Players:GetPlayerByUserId(someUserId)

Khi một ID người dùng số được truyền vào API của engine chấp nhận ID người dùng, nó sẽ tự động được bọc trong một User ở mức nội bộ.

API của engine trả về ID người dùng

API của engine trả về ID người dùng số tiếp tục sử dụng các tên trường và loại giống nhau. Mỗi ID được trả về là ID toàn cầu hoặc ID người dùng theo miền phụ thuộc vào việc người dùng tham gia trò chơi trước hay sau khi triển khai ID theo miền:

  • Người chơi quay lại (tham gia lần đầu trước khi ra mắt ID theo miền) — API trả về ID người dùng toàn cầu của người dùng.
  • Người chơi mới (tham gia lần đầu sau khi ra mắt ID theo miền) — API trả về ID người dùng theo miền của người dùng.

Cả ID người dùng toàn cầu và ID người dùng theo miền đều là các số nguyên chuẩn không xung đột, vì vậy mã hiện tại đọc các trường số này vẫn tiếp tục hoạt động.

Lưu danh tính người dùng

Đối với các khóa dữ liệu trong một trò chơi duy nhất, hãy sử dụng user.Id trực tiếp:


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

Đối với các giá trị có thể được đọc bởi các hệ thống khác hoặc cần ngữ cảnh toàn miền đầy đủ, hãy tuần tự hóa User với ToString():


local encoded = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encoded)
-- Sau đó, khôi phục từ chuỗi
local user = User.fromString(encoded)

Để biết thêm chi tiết về các đảm bảo tuần tự hóa, hãy xem tham chiếu User.

Thực tiễn tốt nhất

  • Sử dụng Player.User làm định danh chuẩn trong mã mới.
  • Sử dụng ToString()fromString() khi lưu trữ hoặc truyền tải một giá trị User.
  • Không sử dụng ID người dùng số từ một miền để xác định một người dùng trong miền khác.

Khi nào nên sử dụng Người dùng hoặc Người chơi

  • Sử dụng Player cho các hành động trong máy chủ: chuyển động nhân vật, GUI, dịch chuyển, trò chuyện, kho vật phẩm.
  • Sử dụng User cho danh tính mà tồn tại lâu hơn một phiên: lưu dữ liệu, công cụ Open Cloud, tham chiếu giữa các trò chơi.
©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.