ผู้ใช้และรหัสผู้ใช้ที่มีขอบเขตโดเมน

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

Roblox จะกำหนดให้แต่ละผู้ใช้มี รหัสผู้ใช้ที่มีขอบเขตโดเมน ที่ไม่ซ้ำกันต่อเกมหรือแอปที่พวกเขามีปฏิสัมพันธ์ด้วย หน้านี้จะอธิบายว่าการระบุที่มีขอบเขตโดเมนทำงานอย่างไรและวิธีการใช้ประเภท User ในโค้ดเกมของคุณ

แนวคิดต่อไปนี้เป็นแนวคิดสำคัญในการระบุผู้ใช้:

แนวคิดคำอธิบาย
ผู้ใช้บัญชีที่มีความต่อเนื่องใน Roblox
ผู้เล่นการแสดงผลของผู้ใช้ภายในโมเดลข้อมูลของเกมที่กำลังทำงาน (ดู Players)
User ประเภทข้อมูลประเภทข้อมูลที่แสดงถึงตัวตนของผู้ใช้ภายในโดเมนเฉพาะ นี่คือรหัสประจำตัวมาตรฐานสำหรับการอ้างอิงถึงผู้ใช้ในโค้ดเกม
รหัสผู้ใช้ที่มีขอบเขตโดเมนรหัสจำนวนที่ระบุตัวผู้ใช้ได้อย่างไม่ซ้ำกันภายใน โดเมน เฉพาะ รหัสนี้จะแตกต่างกันในแต่ละเกมและแอป

รหัสผู้ใช้ที่มีขอบเขตโดเมน

รหัสผู้ใช้ที่มีขอบเขตโดเมน คือรหัสที่ไม่ซ้ำกันซึ่งถูกกำหนดให้กับผู้ใช้ใน เกม หรือ แอป เฉพาะ ไม่เหมือนกับรหัสผู้ใช้ทั่วโลก รหัสผู้ใช้ที่มีขอบเขตโดเมนจะมีความหมายเฉพาะภายในโดเมนที่ออกให้เท่านั้น ดังนั้นผู้ใช้เดียวกันจึงมีรหัสผู้ใช้ที่มีขอบเขตโดเมนที่แตกต่างกันในแต่ละเกมหรือแอปที่พวกเขามีปฏิสัมพันธ์กับ ผู้เล่นที่เข้าร่วมเกมของคุณก่อนที่จะมีการเปิดตัวรหัสแบบมีขอบเขตจะเก็บรหัสผู้ใช้ทั่วโลกเดิมของพวกเขาไว้ในเกมนั้น (ดู Returning players)

ประเภทโดเมนจะแสดงด้วย Enum.DomainType:

ประเภทโดเมนขอบเขตถึงตัวอย่าง
Enum.DomainType.EXPERIENCEเกมเฉพาะ (จักรวาล)รหัสผู้เล่นในเกมของคุณ
Enum.DomainType.OAUTHแอปพลิเคชัน OAuth เฉพาะรหัสผู้ใช้ในเครื่องมือภายนอกของคุณ

วิธีการทำงานของรหัสที่มีขอบเขตโดเมน

เมื่อผู้เล่นเข้าร่วมเกมของคุณ พวกเขาจะได้รับรหัสผู้ใช้ที่มีขอบเขตโดเมนที่ไม่ซ้ำกันสำหรับเกมนั้น ผู้เล่นคนเดียวกันที่เข้าร่วมเกมที่แตกต่างกันจะได้รับรหัสผู้ใช้ที่มีขอบเขตโดเมนที่แตกต่างกัน นี่หมายความว่า:

  • รหัสผู้ใช้ที่มีขอบเขตโดเมนเป็นจำนวนเต็ม ซึ่งคล้ายกับรหัสผู้ใช้ทั่วโลกที่มีอยู่
  • รหัสผู้ใช้ที่มีขอบเขตโดเมนจะไม่มีการชนกันกับรหัสผู้ใช้ทั่วโลกที่มีอยู่
  • ค่าเลขเดียวกันอาจปรากฏในโดเมนที่แตกต่างกันสำหรับผู้ใช้ที่แตกต่างกัน โดยกุญแจที่ไม่ซ้ำกันคือการรวมกันของประเภทโดเมน, รหัสโดเมน, และรหัสผู้ใช้ที่มีขอบเขตโดเมน

ตัวอย่างสถานการณ์

ตัวอย่างต่อไปนี้แสดงให้เห็นว่าเกมต่าง ๆ อ้างอิงถึงผู้ใช้เดียวกันได้อย่างไร:

สถานการณ์บริบทผู้ใช้รหัสผู้ใช้ที่เกมเห็น
ผู้ใช้เชื่อมต่อกับ เกม Aผู้เล่นที่กลับมา (เคยเข้าชมมาก่อนที่มีรหัสแบบมีขอบเขต)123 (รหัสทั่วโลก, ไม่เปลี่ยนแปลง)
ผู้ใช้เชื่อมต่อกับ เกม Bเข้าชมครั้งแรกหลังจากการเปิดตัวรหัสแบบมีขอบเขต500789 (รหัสผู้ใช้ที่มีขอบเขตโดเมนสำหรับเกม B)
ผู้ใช้เชื่อมต่อกับ เกม Cเข้าชมครั้งแรกหลังจากการเปิดตัวรหัสแบบมีขอบเขต302441 (รหัสผู้ใช้ที่มีขอบเขตโดเมนสำหรับเกม C)

ผู้เล่นที่กลับมา

หากผู้เล่นได้เข้าร่วมเกมของคุณก่อนการเปิดตัวรหัสผู้ใช้ที่มีขอบเขต พวกเขาจะเก็บรหัสผู้ใช้ทั่วโลกเดิมไว้ในเกมนั้น นี่ทำให้แน่ใจว่ากุญแจร้านข้อมูลที่มีอยู่, อันดับ, และสินค้าคงคลังมีความสามารถในการทำงานโดยไม่ต้องมีการเปลี่ยนแปลงใด ๆ

การทำงานกับประเภทผู้ใช้

User เป็นวิธีมาตรฐานในการระบุผู้ใช้ในโค้ดเกม ค่า User จะมีรหัสผู้ใช้ที่มีขอบเขตโดเมนควบคู่ไปกับประเภทโดเมนและรหัสโดเมน ดังนั้นบริบทของตัวตนจะเดินทางไปพร้อมกับรหัสประจำตัวเสมอ สำหรับรายละเอียด API เต็มรูปแบบ โปรดดูที่การอ้างอิง User

ดึงผู้ใช้จากผู้เล่น

วิธีหลักในการดึง User คือจาก Player ที่เชื่อมต่อผ่าน Player.User:


local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local user = player.User
print("รหัสผู้ใช้โดเมน:", user.Id)
print("ประเภทโดเมน:", user.DomainType)
print("รหัสโดเมน:", user.DomainId)
end)

สร้างผู้ใช้จากรหัส

เพื่อสร้าง User จากรหัสผู้ใช้ที่รู้ในเกมปัจจุบัน ใช้ User.fromId():


local user = User.fromId(knownUserId)

การใช้ผู้ใช้กับ API ของเครื่องยนต์

API ของเครื่องยนต์ที่รองรับพารามิเตอร์รหัสผู้ใช้ยังรองรับค่าของ User โดยตรง การใช้ User เป็นที่แนะนำ:


-- ทั้งสองรูปแบบทำงานได้:
BadgeService:AwardBadge(player.User, badgeId) -- แนะนำ
BadgeService:AwardBadge(player.UserId, badgeId)

-- ทั้งสองรูปแบบทำงานได้:
local target = Players:GetPlayerByUserId(player.User) -- แนะนำ
local target = Players:GetPlayerByUserId(someUserId)

เมื่อรหัสผู้ใช้จำนวนเต็มถูกส่งไปยัง API ของเครื่องยนต์ที่รองรับรหัสผู้ใช้ มันจะถูกห่อใน User โดยอัตโนมัติ

API ของเครื่องยนต์ที่ส่งคืนรหัสผู้ใช้

API ของเครื่องยนต์ที่ส่งคืนรหัสผู้ใช้จำนวนเต็มจะยังคงใช้ชื่อและประเภทฟิลด์เดียวกัน รหัสที่ส่งคืนแต่ละรหัสจะเป็นรหัสทั่วโลกหรือรหัสผู้ใช้ที่มีขอบเขตโดเมนขึ้นอยู่กับว่าผู้ใช้เข้าร่วมเกมก่อนหรือหลังการเปิดตัวรหัสที่มีขอบเขต:

  • ผู้เล่นที่กลับมา (เข้าร่วมครั้งแรกก่อนการเปิดตัวรหัสที่มีขอบเขต) — API จะส่งคืนรหัสผู้ใช้ทั่วโลกของผู้ใช้
  • ผู้เล่นใหม่ (เข้าร่วมครั้งแรกหลังการเปิดตัวรหัสที่มีขอบเขต) — API จะส่งคืนรหัสผู้ใช้ที่มีขอบเขตโดเมนของผู้ใช้

ทั้งรหัสผู้ใช้ทั่วโลกและรหัสผู้ใช้ที่มีขอบเขตโดเมนเป็นจำนวนเต็มมาตรฐานที่ไม่ชนกัน ดังนั้นโค้ดที่มีอยู่ซึ่งอ่านฟิลด์จำนวนเหล่านี้ยังคงทำงานได้

การจัดเก็บตัวตนของผู้ใช้

สำหรับกุญแจร้านข้อมูลภายในเกมเดียว ใช้ user.Id โดยตรง:


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

สำหรับค่าที่อาจอ่านโดยระบบอื่น ๆ หรือจำเป็นต้องมีบริบทโดเมนเต็มรูปแบบ ให้ทำการจัดเก็บ User ด้วย ToString():


local encoded = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encoded)
-- หลังจากนั้นให้คืนค่าเป็นสตริง
local user = User.fromString(encoded)

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการรับประกันการจัดเก็บ โปรดดูที่การอ้างอิง User

แนวทางปฏิบัติที่ดีที่สุด

  • ใช้ Player.User เป็นรหัสประจำตัวมาตรฐานในโค้ดใหม่
  • ใช้ ToString() และ fromString() เมื่อบันทึกหรือส่งค่าของ User
  • อย่าใช้รหัสผู้ใช้จำนวนเต็มจากโดเมนหนึ่งเพื่อระบุผู้ใช้ในโดเมนอื่น

เมื่อใดควรใช้ User หรือ Player

  • ใช้ Player สำหรับการดำเนินการในเซิร์ฟเวอร์: การเคลื่อนไหวของตัวละคร, GUI, การโทร, การแชท, สินค้าคงคลัง
  • ใช้ User สำหรับตัวตนที่อยู่เหนือกว่าเซสชัน: ร้านข้อมูล, เครื่องมือ Open Cloud, อ้างอิงข้ามเกม
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ