การกำหนดค่าประสบการณ์ ช่วยให้คุณอัปเดตค่าภายในเกมได้แบบเรียลไทม์โดยไม่ต้องรีสตาร์ทเซิร์ฟเวอร์:
- เปิดหรือปิดฟีเจอร์ต่างๆ เช่น การเปิดหรือปิดดันเจี้ยนแบบแนะนำใหม่
- ปรับค่าภายในเกมเช่น พลังชีวิตบอส, การได้รับประสบการณ์ หรือราคาของไอเท็ม
- เปิดเนื้อหาที่มีเวลาจำกัด เช่น เหตุการณ์ฮัลโลวีนที่เริ่มเวลาเที่ยงคืน
การกำหนดค่ามีรูปแบบเป็นคีย์และค่า แทนที่จะใช้ค่าคอนสแตนต์แบบฮาร์ดโค้ดในโค้ดของคุณ คุณสามารถใช้คีย์เพื่อให้ได้ค่าหนึ่ง (สตริง, หมายเลข, ตัวแปรบูลีน หรือ JSON อ็อบเจ็กต์) และจากนั้นอัปเดตค่านั้นได้ทุกเมื่อที่ต้องการโดยไม่ต้องเผยแพร่เวอร์ชันใหม่ของประสบการณ์ของคุณ การเปลี่ยนแปลงโค้ดที่ต้องการมีน้อยมาก:
local ConfigService = game:GetService("ConfigService")
local configSnapshot = ConfigService:GetConfigAsync()
local myValue = configSnapshot:GetValue("my_key_name")คุณสามารถมีการกำหนดค่าที่ใช้งานได้สูงสุด 1,000 แบบในเวลาใดก็ได้และจัดการได้ที่ Creator Hub หรือใน Roblox Studio

สร้างและแก้ไขการกำหนดค่า
ไปที่หน้าการกำหนดค่าของ Creator Hub สำหรับประสบการณ์ของคุณ แล้วคลิก สร้างการกำหนดค่า
ระบุคีย์ ประเภท ค่า และเลือกเติมคำบรรยายเพื่อช่วยคุณหรือทีมของคุณในการระบุวัตถุประสงค์ของการกำหนดค่า ประเภทที่รองรับคือ สตริง หมายเลข ตัวแปรบูลีน และ JSON อ็อบเจ็กต์
คัดลอกโค้ดที่สร้างขึ้นไปยังสคริปต์เซิร์ฟเวอร์ในประสบการณ์ของคุณ โดยปกติจะอยู่ใน ServerScriptService โค้ดควรมีลักษณะประมาณนี้:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local MY_KEY = "my_key" -- ไม่บังคับ, เก็บคีย์การกำหนดค่าเป็นค่าคงที่local myValue = configSnapshot:GetValue(MY_KEY)ใช้ค่าดังกล่าวเหมือนกับตัวแปรอื่นๆ การกำหนดค่า จะไม่มีผล นอกเหนือจากที่คุณใช้ในโค้ดของคุณ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับการกำหนดค่าในสคริปต์ของคุณ ดูที่ เพิ่มการกำหนดค่าในโค้ดของคุณ.
การแก้ไขการกำหนดค่าไม่มีความแตกต่างจากการสร้าง คลิกที่ปุ่ม แก้ไข และอัปเดตค่าและคำอธิบายตามที่ต้องการ
ขีดจำกัด
ค่าการกำหนดค่ามีข้อจำกัดดังต่อไปนี้ตามประเภท
| ประเภท | ขนาดสูงสุด |
|---|---|
| สตริง | 100,000 ตัวอักษร |
| หมายเลข | ±1.7976931348623157e+308, ±2^53 สำหรับการแทนค่าเชิงจำนวนที่แน่นอน |
| ตัวแปรบูลีน | ไม่ใช้ |
| JSON | 100,000 ตัวอักษร |
เผยแพร่การกำหนดค่า
หลังจากที่คุณสร้างการกำหนดค่าแล้ว มันจะย้ายไปยังสถานะ กำลังตั้งค่า เพื่อให้คุณสามารถทดสอบก่อนที่จะเผยแพร่ให้ผู้ใช้ทั่วไปสามารถใช้งานได้ การเปลี่ยนแปลงที่กำลังตั้งค่านี้สามารถใช้งานได้กับคุณและทีมของคุณในช่วงการเล่นใน Studio แต่ไม่มีผลกับผู้เล่นในประสบการณ์สด หน้าการกำหนดค่าบน Creator Hub จะแสดงการเปลี่ยนแปลงที่ใช้งานอยู่และกำลังตั้งทั้งหมด

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

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

ดูประวัติและเรียกคืนการกำหนดค่า
ในหน้าการกำหนดค่า คลิก ประวัติ เพื่อดูการอัปเดตที่ผ่านมา การอัปเดตแต่ละครั้งจะมีวันและเวลาของการเปลี่ยนแปลง ใครเป็นผู้ทำการเปลี่ยนแปลง และข้อความเผยแพร่

- ขยายแต่ละแถวเพื่อดูคีย์ ค่าก่อนการเปลี่ยนแปลง และค่าหลังการเปลี่ยนแปลง
- ใช้ช่องค้นหาคีย์เพื่อค้นหาคีย์ เท่านั้น ไม่ใช่คำอธิบายหรือค่า เพียงคีย์เท่านั้น
หน้าประวัติยังให้คุณเรียกคืนการกำหนดค่าไปยังสถานะก่อนหน้า:
- คลิก เรียกคืน ข้างการเปลี่ยนแปลงเพื่อตั้งค่าค่า “ก่อนหน้า” โปรดทราบว่าการเรียกคืนการกำหนดค่าจะลบการเปลี่ยนแปลงที่อยู่ในระหว่างดำเนินการอยู่
- กลับไปที่หน้าการกำหนดค่าและ เผยแพร่การกำหนดค่า.
เพิ่มการกำหนดค่าในโค้ดของคุณ
คลาสหลักสำหรับการทำงานกับการกำหนดค่าคือ ConfigService ซึ่งดึงคีย์และค่าล่าสุดสำหรับประสบการณ์ของคุณ ConfigService สามารถใช้ได้แค่ในสคริปต์เซิร์ฟเวอร์เท่านั้น การพยายามเรียกใช้เมธอดของมันจากสคริปต์ของไคลเอนต์จะส่งผลให้เกิดข้อผิดพลาด
ขั้นตอนแรกในการทำงานกับการกำหนดค่าคือการดึง ConfigSnapshot ค่าล่าสุดสำหรับการกำหนดค่าทั้งหมด ณ จุดเวลาในปัจจุบัน มีสองวิธีในการดึงสแนปช็อต:
ConfigService:GetConfigAsync() ใช้สำหรับการกำหนดค่าทั่วไปที่คุณต้องการใช้กับผู้เล่นทั้งหมดในประสบการณ์นั้น:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local bossHealth = configSnapshot:GetValue("bossHealth")ConfigService:GetConfigForPlayerAsync() ใช้สำหรับ การทดลอง มันดึงการกำหนดค่าที่เฉพาะเจาะจงสำหรับผู้เล่น เพื่อให้ผู้เล่นที่แตกต่างกันสามารถได้รับค่าที่แตกต่างกัน
local ConfigService = game:GetService("ConfigService")local Players = game:GetService("Players")local function onPlayerAdded(player)local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)local bossHealth = playerConfigSnapshot:GetValue("bossHealth")endPlayers.PlayerAdded:Connect(onPlayerAdded)
ในทั้งสองกรณี หากคีย์ไม่มีอยู่ ConfigSnapshot:GetValue() จะคืนค่า nil
รีเฟรชสแนปช็อต
ConfigSnapshots แสดงถึงจุดในเวลา สถานะของการกำหนดค่าเมื่อคุณขอสแนปช็อต เพื่อหลีกเลี่ยงการรบกวนการเล่นเกม การอัปเดตการกำหนดค่า จะไม่ ถูกส่งต่อไปยังสแนปช็อต ในเกมยิงที่มีการแข่งขัน เช่น คุณอาจต้องการค่าการกำหนดค่าใหม่ระหว่างรอบเท่านั้น เพื่อให้คุณลักษณะของอาวุธไม่ผันผวนระหว่างการแข่งขัน
ในการดึงค่าล่าสุดด้วยตนเอง ให้ใช้เมธอด ConfigSnapshot:Refresh() นอกจากนี้ คุณสามารถเชื่อมต่อฟังก์ชันกับอีเวนต์ ConfigSnapshot.UpdateAvailable เพื่อรีเฟรชอัตโนมัติ:
configSnapshot.UpdateAvailable:Connect(function()
configSnapshot:Refresh()
end)หลังจากที่คุณรีเฟรชสแนปช็อต คุณสามารถใช้ ConfigSnapshot:GetValueChangedSignal() เพื่อฟังการเปลี่ยนแปลงของคีย์เฉพาะ เพื่อให้คุณสามารถอัปเดตโค้ดของประสบการณ์ของคุณ:
configSnapshot:GetValueChangedSignal("bossHealth"):Connect(function(newHealthValue)
spawnNewBoss(newHealthValue)
end)การจัดการข้อผิดพลาด
ในกรณีที่หายากเมื่อการกำหนดค่าไม่สามารถโหลดได้และไม่เคยโหลดมาก่อน เมธอด ConfigService:GetConfigAsync() จะส่งข้อผิดพลาด
หาก ConfigService สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ Roblox หลังจากที่มันถูกโหลดแล้ว ConfigService:GetConfigAsync() จะส่งคืนสแนปช็อตที่มีค่าล่าสุดที่มีอยู่ สแนปช็อตเหล่านี้จะพยายามเชื่อมต่อใหม่และยิงอีเวนต์ UpdateAvailable เมื่อต้องการโหลดการอัปเดตใหม่
วิธีที่คุณจัดการกับสถานการณ์ที่ไม่ธรรมดานี้ขึ้นอยู่กับคุณ คุณสามารถห่อหุ้มคำเรียกใน pcall() และมีค่าที่สำรองไว้ในโค้ดของคุณ แสดงข้อความผิดพลาดให้กับผู้เล่นและรอให้สแนปช็อตเชื่อมต่อใหม่ หรือบางวิธีอื่น
ทดสอบการกำหนดค่า
ConfigService มีเมธอดในตัวสำหรับการทดลองการเปลี่ยนแปลงการกำหนดค่าอย่างชั่วคราว ทั้งใน Studio และบนเซิร์ฟเวอร์สดโดยไม่กระทบต่อประสบการณ์ทั้งหมด
ในการตั้งค่าสำหรับการทดสอบเฉพาะท้องถิ่น ให้เรียกใช้ ConfigService:SetTestingValue() จากสคริปต์เซิร์ฟเวอร์หรือติดต่อผ่าน Developer Console การเปลี่ยนแปลงค่าทดสอบจะกระตุ้นการอัปเดตการกำหนดค่า พร้อมกับสัญญาณ ConfigSnapshot.UpdateAvailable เช่นเดียวกับการอัปเดตในผลิตภัณฑ์ คุณจะต้องรีเฟรชสแนปช็อตที่มีอยู่เพื่อให้ได้ค่าทดสอบ:
local ConfigService = game:GetService("ConfigService")
ConfigService:SetTestingValue("bossHealth", 200)
local configSnapshot = ConfigService:GetConfigAsync()
local bossHealth = configSnapshot:GetValue("bossHealth") -- ตอนนี้เป็น 200!การเปลี่ยนแปลงการทดสอบจะมีผลตลอดช่วงชีวิตของเซิร์ฟเวอร์ปัจจุบันและจะไม่ส่งต่อไปยังเซิร์ฟเวอร์อื่น ใน Studio จะมีผลกับช่วงการเล่นปัจจุบันและจะไม่ส่งผลกระทบต่อเซิร์ฟเวอร์สด คุณสามารถลบการเปลี่ยนแปลงการทดสอบด้วย ConfigService:ClearTestingValue().