3 วิธีในการทำงานกับที่เก็บข้อมูลบน Roblox

สารบัญ:

3 วิธีในการทำงานกับที่เก็บข้อมูลบน Roblox
3 วิธีในการทำงานกับที่เก็บข้อมูลบน Roblox
Anonim

ทุกคนต้องการบันทึกข้อมูลและโหลดใหม่ทุกครั้งที่ผู้เล่นเข้าเกมอีกครั้ง? นับตั้งแต่ที่ Data Persistence กลายเป็นสิ่งที่ไร้ประโยชน์ ROBLOX ได้แนะนำที่เก็บข้อมูลที่ทำงานได้มากกว่ามาก คำแนะนำวิธีใช้ต่อไปนี้จะช่วยให้คุณสามารถทำงานกับที่เก็บข้อมูลสำหรับ ROBLOX

ขั้นตอน

วิธีที่ 1 จาก 3: การตั้งค่าที่เก็บข้อมูล

7815950 1
7815950 1

ขั้นตอนที่ 1 กำหนดค่า API

สิ่งนี้ไม่เกี่ยวข้องกับการเขียนสคริปต์ใดๆ แต่เพื่อเปิดใช้งาน API ที่เก็บข้อมูลทั้งหมด คุณต้องเปิดใช้งานการเข้าถึง API ก่อน ในการดำเนินการนี้ ไปที่แท็บ พัฒนา แล้วคลิก "เกม" การดำเนินการนี้จะนำคุณไปยังสถานที่ทั้งหมดในเกมปัจจุบันที่คุณเป็นเจ้าของ ค้นหาเกมของคุณ แล้วคลิกที่เฟือง ควรมีเมนูดรอปดาวน์ปรากฏขึ้นและกด "กำหนดค่า" ทำเครื่องหมายที่ช่องที่เปิดใช้งาน "เปิดใช้งาน Studio Access to API Services" และบันทึก ตอนนี้คุณควรมีสิทธิ์เข้าถึง API ที่สมบูรณ์แล้ว

7815950 2
7815950 2

ขั้นตอนที่ 2 ดึงที่เก็บข้อมูล

ใช้ Data Store API เพื่อเรียกใช้ที่เก็บข้อมูล เนื่องจากเราจำเป็นต้องอ้างอิง ในการเริ่มต้น ให้เปิดสคริปต์บน ROBLOX และตั้งชื่อตัวแปรที่เราต้องการใช้เพื่อเรียกข้อมูลอ้างอิง

    ที่เก็บข้อมูลในเครื่อง = เกม:GetService("DataStoreService"):GetDataStore("name")

7815950 3
7815950 3

ขั้นตอนที่ 3 ใช้ตัวแปรตามต้องการ

คุณเรียก datastore สำเร็จด้วยตัวแปร "datastore" ในตอนนี้ เมื่อใดก็ตามที่คุณต้องการดึง datastore คุณสามารถตั้งชื่อมันตามตัวแปรได้

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

วิธีที่ 2 จาก 3: การใช้วิธีการจัดเก็บข้อมูล

7815950 4
7815950 4

ขั้นตอนที่ 1 GetAsync

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

  • รหัสต่อไปนี้จะแสดงผลเป็นศูนย์ เนื่องจากเซิร์ฟเวอร์ไม่พบค่าใด ๆ ที่เชื่อมโยงกับคีย์ สิ่งสำคัญคือต้องแสดงให้เซิร์ฟเวอร์ทราบว่าเรากำลังพยายามส่งออกอะไร เพื่อให้เซิร์ฟเวอร์รู้ว่าต้องแสดงอะไร
  • local datastore = เกม:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:GetAsync(key) end)

7815950 5
7815950 5

ขั้นตอนที่ 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) -- พิมพ์เอาต์พุตที่สิ้นสุด)

  • หมายเหตุ: สิ่งนี้จะไม่ทำงาน เว้นแต่คุณจะเปิดใช้งานการเข้าถึง API ในการดำเนินการนี้ ให้อ่านคำแนะนำแรกของคู่มือนี้
7815950 6
7815950 6

ขั้นตอนที่ 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)

  • โปรดทราบว่าเซิร์ฟเวอร์จะคืนค่าเป็นศูนย์หากไม่มีคีย์หรือไม่ได้กำหนดอย่างถูกต้อง
  • หากไม่มีฟังก์ชันนี้ การอัปเดตจะถูกยกเลิก
7815950 7
7815950 7

ขั้นตอนที่ 4 ใช้ IncrementAsync เพื่อเพิ่มค่าสำหรับคีย์ และส่งกลับค่าที่เพิ่มขึ้น

วิธีนี้ใช้ได้กับจำนวนเต็มเท่านั้น

วิธีที่ 3 จาก 3: เหตุการณ์ที่เก็บข้อมูลและการอัปเดตข้อมูล

7815950 8
7815950 8

ขั้นตอนที่ 1. ตั้งค่าคีย์เฉพาะ

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

    local datastore = เกม:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId end)

  • สิ่งนี้จะสร้างรหัสเฉพาะสำหรับผู้เล่นนั้นโดยอัตโนมัติเท่านั้น สำหรับผู้เล่นทุกคนจะมี ID ที่ไม่ซ้ำกันหนึ่งรหัส "user_" จะไม่มีความสำคัญ
7815950 9
7815950 9

ขั้นตอนที่ 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) สิ้นสุด)

  • ในฟังก์ชันนี้ เราตั้งค่าฟังก์ชันอื่น แบบเก่า "เก่า" คือข้อมูลที่บันทึกไว้ก่อนหน้านี้ของเรา ในสถานการณ์นี้ ทุกครั้งที่ผู้เล่นเข้าสู่เซิร์ฟเวอร์ เซิร์ฟเวอร์จะค้นหาคีย์ ซึ่งเป็นรหัสผู้ใช้ของตน และจะอัปเดตข้อมูล 50 คะแนน ส่งคืนและแสดงค่าใหม่นั้น
7815950 10
7815950 10

ขั้นตอนที่ 3 ขอแสดงความยินดี

คุณได้จัดเก็บและอัปเดตข้อมูลผู้เล่นเรียบร้อยแล้ว

คำเตือน

  • เมื่อสร้างที่จัดเก็บข้อมูลของคุณเป็นครั้งแรก ตรวจสอบให้แน่ใจว่าได้มี "game:GetService("DataStoreService")" ด้วยการใช้อักษรตัวพิมพ์ใหญ่ที่ถูกต้อง มันจะไม่ทำงานอย่างมีประสิทธิภาพหากถูกเรียกอย่างไม่ถูกต้อง
  • ตรวจสอบให้แน่ใจว่าเมื่อใดควรใช้ "SetAsync" และ "UpdateAsync" เนื่องจากการใช้ที่ไม่ถูกต้องอาจทำให้สิ่งต่างๆ ยุ่งเหยิงเมื่อดึงข้อมูล ในกรณีส่วนใหญ่ นักพัฒนาจะใช้ "UpdateAsync"

แนะนำ: