การกำหนดค่าประสบการณ์

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

การกำหนดค่าประสบการณ์ ช่วยให้คุณอัปเดตค่าภายในเกมได้แบบเรียลไทม์โดยไม่ต้องรีสตาร์ทเซิร์ฟเวอร์:

  • เปิดหรือปิดฟีเจอร์ต่างๆ เช่น การเปิดหรือปิดดันเจี้ยนแบบแนะนำใหม่
  • ปรับค่าภายในเกมเช่น พลังชีวิตบอส, การได้รับประสบการณ์ หรือราคาของไอเท็ม
  • เปิดเนื้อหาที่มีเวลาจำกัด เช่น เหตุการณ์ฮัลโลวีนที่เริ่มเวลาเที่ยงคืน

การกำหนดค่ามีรูปแบบเป็นคีย์และค่า แทนที่จะใช้ค่าคอนสแตนต์แบบฮาร์ดโค้ดในโค้ดของคุณ คุณสามารถใช้คีย์เพื่อให้ได้ค่าหนึ่ง (สตริง, หมายเลข, ตัวแปรบูลีน หรือ 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

สร้างและแก้ไขการกำหนดค่า

  1. ไปที่หน้าการกำหนดค่าของ Creator Hub สำหรับประสบการณ์ของคุณ แล้วคลิก สร้างการกำหนดค่า

  2. ระบุคีย์ ประเภท ค่า และเลือกเติมคำบรรยายเพื่อช่วยคุณหรือทีมของคุณในการระบุวัตถุประสงค์ของการกำหนดค่า ประเภทที่รองรับคือ สตริง หมายเลข ตัวแปรบูลีน และ JSON อ็อบเจ็กต์

  3. คัดลอกโค้ดที่สร้างขึ้นไปยังสคริปต์เซิร์ฟเวอร์ในประสบการณ์ของคุณ โดยปกติจะอยู่ใน ServerScriptService โค้ดควรมีลักษณะประมาณนี้:

    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local MY_KEY = "my_key" -- ไม่บังคับ, เก็บคีย์การกำหนดค่าเป็นค่าคงที่
    local myValue = configSnapshot:GetValue(MY_KEY)
  4. ใช้ค่าดังกล่าวเหมือนกับตัวแปรอื่นๆ การกำหนดค่า จะไม่มีผล นอกเหนือจากที่คุณใช้ในโค้ดของคุณ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับการกำหนดค่าในสคริปต์ของคุณ ดูที่ เพิ่มการกำหนดค่าในโค้ดของคุณ.

การแก้ไขการกำหนดค่าไม่มีความแตกต่างจากการสร้าง คลิกที่ปุ่ม แก้ไข และอัปเดตค่าและคำอธิบายตามที่ต้องการ

ขีดจำกัด

ค่าการกำหนดค่ามีข้อจำกัดดังต่อไปนี้ตามประเภท

ประเภทขนาดสูงสุด
สตริง100,000 ตัวอักษร
หมายเลข±1.7976931348623157e+308, ±2^53 สำหรับการแทนค่าเชิงจำนวนที่แน่นอน
ตัวแปรบูลีนไม่ใช้
JSON100,000 ตัวอักษร

เผยแพร่การกำหนดค่า

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

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

สร้างและแก้ไขการกำหนดค่าใน Studio

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

หน้าต่าง Studio สำหรับการทำงานกับการกำหนดค่า

เผยแพร่การกำหนดค่าไปยังประสบการณ์อื่น

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

หน้าต่าง Studio สำหรับการทำงานกับการกำหนดค่า

ดูประวัติและเรียกคืนการกำหนดค่า

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

หน้าประวัติกับความแตกต่างที่ขยายการกำหนดค่า

  • ขยายแต่ละแถวเพื่อดูคีย์ ค่าก่อนการเปลี่ยนแปลง และค่าหลังการเปลี่ยนแปลง
  • ใช้ช่องค้นหาคีย์เพื่อค้นหาคีย์ เท่านั้น ไม่ใช่คำอธิบายหรือค่า เพียงคีย์เท่านั้น

หน้าประวัติยังให้คุณเรียกคืนการกำหนดค่าไปยังสถานะก่อนหน้า:

  1. คลิก เรียกคืน ข้างการเปลี่ยนแปลงเพื่อตั้งค่าค่า “ก่อนหน้า” โปรดทราบว่าการเรียกคืนการกำหนดค่าจะลบการเปลี่ยนแปลงที่อยู่ในระหว่างดำเนินการอยู่
  2. กลับไปที่หน้าการกำหนดค่าและ เผยแพร่การกำหนดค่า.

เพิ่มการกำหนดค่าในโค้ดของคุณ

คลาสหลักสำหรับการทำงานกับการกำหนดค่าคือ 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")
    end
    Players.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().

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ