ทุกคนต้องการบันทึกข้อมูลและโหลดใหม่ทุกครั้งที่ผู้เล่นเข้าเกมอีกครั้ง? นับตั้งแต่ที่ Data Persistence กลายเป็นสิ่งที่ไร้ประโยชน์ ROBLOX ได้แนะนำที่เก็บข้อมูลที่ทำงานได้มากกว่ามาก คำแนะนำวิธีใช้ต่อไปนี้จะช่วยให้คุณสามารถทำงานกับที่เก็บข้อมูลสำหรับ ROBLOX
ขั้นตอน
วิธีที่ 1 จาก 3: การตั้งค่าที่เก็บข้อมูล
ขั้นตอนที่ 1 กำหนดค่า API
สิ่งนี้ไม่เกี่ยวข้องกับการเขียนสคริปต์ใดๆ แต่เพื่อเปิดใช้งาน API ที่เก็บข้อมูลทั้งหมด คุณต้องเปิดใช้งานการเข้าถึง API ก่อน ในการดำเนินการนี้ ไปที่แท็บ พัฒนา แล้วคลิก "เกม" การดำเนินการนี้จะนำคุณไปยังสถานที่ทั้งหมดในเกมปัจจุบันที่คุณเป็นเจ้าของ ค้นหาเกมของคุณ แล้วคลิกที่เฟือง ควรมีเมนูดรอปดาวน์ปรากฏขึ้นและกด "กำหนดค่า" ทำเครื่องหมายที่ช่องที่เปิดใช้งาน "เปิดใช้งาน Studio Access to API Services" และบันทึก ตอนนี้คุณควรมีสิทธิ์เข้าถึง API ที่สมบูรณ์แล้ว
ขั้นตอนที่ 2 ดึงที่เก็บข้อมูล
ใช้ Data Store API เพื่อเรียกใช้ที่เก็บข้อมูล เนื่องจากเราจำเป็นต้องอ้างอิง ในการเริ่มต้น ให้เปิดสคริปต์บน ROBLOX และตั้งชื่อตัวแปรที่เราต้องการใช้เพื่อเรียกข้อมูลอ้างอิง
ที่เก็บข้อมูลในเครื่อง = เกม:GetService("DataStoreService"):GetDataStore("name")
ขั้นตอนที่ 3 ใช้ตัวแปรตามต้องการ
คุณเรียก datastore สำเร็จด้วยตัวแปร "datastore" ในตอนนี้ เมื่อใดก็ตามที่คุณต้องการดึง datastore คุณสามารถตั้งชื่อมันตามตัวแปรได้
โปรดทราบว่าหากยังไม่ได้สร้างที่เก็บข้อมูล ระบบจะสร้างที่เก็บข้อมูลใหม่โดยอัตโนมัติ
วิธีที่ 2 จาก 3: การใช้วิธีการจัดเก็บข้อมูล
ขั้นตอนที่ 1 GetAsync
ใช้ GetAsync เพื่อคืนค่าของรายการในที่เก็บข้อมูลด้วยคีย์ที่กำหนด ตรวจสอบให้แน่ใจว่าได้มอบชุดคีย์ที่ไม่ซ้ำกันให้กับผู้เล่นแต่ละคน เนื่องจากการตั้งค่าผู้เล่นสองคนคีย์เดียวกันจะแทนที่ข้อมูลในเกมของพวกเขาเอง ทำให้เกิดความโกลาหลระหว่างทั้งสองฝ่าย หากคุณต้องการทราบวิธีตั้งค่าคีย์เฉพาะ ให้อ่านต่อ
- รหัสต่อไปนี้จะแสดงผลเป็นศูนย์ เนื่องจากเซิร์ฟเวอร์ไม่พบค่าใด ๆ ที่เชื่อมโยงกับคีย์ สิ่งสำคัญคือต้องแสดงให้เซิร์ฟเวอร์ทราบว่าเรากำลังพยายามส่งออกอะไร เพื่อให้เซิร์ฟเวอร์รู้ว่าต้องแสดงอะไร
local datastore = เกม:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:GetAsync(key) end)
ขั้นตอนที่ 2. SetAsync
ใช้ SetAsync เพื่อตั้งค่าของคีย์ และแทนที่ข้อมูลที่มีอยู่ทั้งหมดที่จัดเก็บไว้สำหรับคีย์ที่ไม่ซ้ำ
- หากชุดข้อมูลก่อนหน้ามีความสำคัญ ให้ลองใช้ UpdateAsync ซึ่งจะสอนด้านล่าง
- โค้ดต่อไปนี้แสดงวิธีใช้งานทั้ง ":GetAsync()" และ ":SetAsync()" เมธอด
local datastore = เกม:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:SetAsync(key, 90) - - ตั้งค่าคีย์เป็นค่า 90 local data_stored = datastore:GetAsync(key) - สามารถตรวจจับการเปลี่ยนแปลงค่า print(data_stored) -- พิมพ์เอาต์พุตที่สิ้นสุด)
ขั้นตอนที่ 3 ใช้ UpdateAsync เพื่อคืนค่าของคีย์ และอัปเดตด้วยค่าใหม่
การดำเนินการนี้จะตรวจสอบข้อมูล และต้องรอจนกว่าเซิร์ฟเวอร์จะหาเวลาอัปเดตได้ เพื่อให้ใช้งานได้ คุณจะต้องส่งพารามิเตอร์สองตัว อย่างแรกคือสตริงที่ใช้คีย์เฉพาะที่คุณตั้งค่าไว้: "'user_'.. player.userId" และอันที่สองคือฟังก์ชันที่จะรับค่าเดิม
local datastore = เกม:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:UpdateAsync(key, function(old)) -- ทำสิ่งต่าง ๆ จบ) สิ้นสุด)
local datastore = เกม:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:UpdateAsync(key, function(old)) local new = old หรือ 0 -- อาจเป็น nil new = new + 1 -- เพิ่ม 1 ให้กับค่าเก่า return new -- คืนค่าด้วยค่าใหม่ end) end)
ขั้นตอนที่ 4 ใช้ IncrementAsync เพื่อเพิ่มค่าสำหรับคีย์ และส่งกลับค่าที่เพิ่มขึ้น
วิธีนี้ใช้ได้กับจำนวนเต็มเท่านั้น
วิธีที่ 3 จาก 3: เหตุการณ์ที่เก็บข้อมูลและการอัปเดตข้อมูล
ขั้นตอนที่ 1. ตั้งค่าคีย์เฉพาะ
เป็นสิ่งสำคัญอย่างยิ่งที่ผู้เล่นทุกคนต้องมีกุญแจที่เป็นเอกลักษณ์เฉพาะสำหรับพวกเขา พวกเขาจะยึดกุญแจนั้นไว้ ซึ่งจะเก็บข้อมูลทั้งหมดของพวกเขา ในการดำเนินการนี้ เราใช้ ID ของผู้เล่น เมื่อคุณตั้งค่าที่เก็บข้อมูลแล้ว เพียงแค่เรียกใช้ฟังก์ชันเพื่อโหลดเครื่องเล่น จากนั้นค้นหา ID ของผู้เล่น รหัสควรมีลักษณะดังนี้:
local datastore = เกม:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId end)
ขั้นตอนที่ 2. อัปเดตข้อมูล
เมื่อคุณมีคีย์เฉพาะสำหรับผู้เล่นแต่ละคนแล้ว คุณก็พร้อมที่จะอัปเดตที่เก็บข้อมูลและเรียกข้อมูล ใต้คีย์ของคุณ คุณจะต้องเพิ่มวิธีการที่เหมาะสมกับความต้องการของคุณมากที่สุด ในกรณีนี้ เราจะใช้ "UpdateAsync"
- เริ่มต้นด้วยฟังก์ชันเพื่อช่วยให้เซิร์ฟเวอร์เข้าใจสิ่งที่คุณตั้งใจจะทำ
local datastore = เกม:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:UpdateAsync(key, function(old)) local newValue = old หรือ 0 -- อาจเป็นศูนย์ newValue = newValue + 50 return newValue end) สิ้นสุด)
ขั้นตอนที่ 3 ขอแสดงความยินดี
คุณได้จัดเก็บและอัปเดตข้อมูลผู้เล่นเรียบร้อยแล้ว
คำเตือน
- เมื่อสร้างที่จัดเก็บข้อมูลของคุณเป็นครั้งแรก ตรวจสอบให้แน่ใจว่าได้มี "game:GetService("DataStoreService")" ด้วยการใช้อักษรตัวพิมพ์ใหญ่ที่ถูกต้อง มันจะไม่ทำงานอย่างมีประสิทธิภาพหากถูกเรียกอย่างไม่ถูกต้อง
- ตรวจสอบให้แน่ใจว่าเมื่อใดควรใช้ "SetAsync" และ "UpdateAsync" เนื่องจากการใช้ที่ไม่ถูกต้องอาจทำให้สิ่งต่างๆ ยุ่งเหยิงเมื่อดึงข้อมูล ในกรณีส่วนใหญ่ นักพัฒนาจะใช้ "UpdateAsync"