การบันทึกข้อมูล

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

เกมมักต้องเก็บข้อมูลบางอย่างระหว่างเซสชันเช่นระดับของผู้เล่น, คะแนนประสบการณ์, รายการสินค้าคงคลัง, เงิน/ทอง, และอื่น ๆ อีกมากมาย

การกวดวิชานี้จะแสดงให้คุณเห็นวิธีการสร้าง เก็บข้อมูลพื้นฐาน รับตัวอย่างข้อมูล และอ่านข้อมูลกลับไปในเซสชันเกม

เปิดใช้งานการเข้าถึงสตูดิโอ

ตามปกติ เกมที่ทดสอบใน Studio ไม่สามารถเข้าถึงห้องเก็บข้อมูลดังนั้นคุณจึงต้องเปิดให้เป็นระเบียบาทก่อน

  1. ตรวจสอบให้แน่ใจว่าเกมของคุณเป็น เผยแพร่ (ไฟล์ > เผยแพร่ไปยัง Roblox) เพื่อเปิดใช้งานการเข้าถึง Studio

  2. จากแท็บ หน้าแรก เปิดหน้าต่าง การตั้งค่าเกม

  3. ในส่วน ความปลอดภัย เปิดใช้งาน เปิดใช้งานการเข้าถึง API ของ Studio ให้บริการเชื่อมต่อกับ API ของคุณ

  4. คลิก บันทึก เพื่อลงทะเบียนการเปลี่ยนแปลงของคุณ

การสร้างห้องเก็บข้อมูล

ร้านค้าข้อมูลจะได้รับการระบุด้วยชื่อที่ไม่เหมือนใคร ชื่อผู้เล่นทอง ในตัวอย่างนี้ร้านค้าข้อมูลชื่อว่า PlayerGold จะบันทึกทองของผู้เล่นแต่ละรายไว้ในที่เก็บข้อมูลที่คงที่

  1. สร้าง Script ใหม่ภายใน ServerScriptService ที่เรียกว่า GoldManager

  2. รับบริการจาก DataStoreService เพื่อให้บริการในตัวแรก


    local DataStoreService = game:GetService("DataStoreService")
  3. โทร DataStoreService:GetDataStore() ด้วยสตริง "PlayerGold" นี้จะเข้าถึง PlayerGold ร้านค้าข้อมูลหากมันมีอยู่แล้วหรือสร้างมันอย่างอื่น


    local DataStoreService = game:GetService("DataStoreService")
    local goldStore = DataStoreService:GetDataStore("PlayerGold")

การบันทึกข้อมูล

ห้องเก็บข้อมูลเป็นพจนานุกรมในทางกลับกัน Lua ตารางเป็นตัวอักษรชื่อเดียวกันสำหรับผู้เล่นหรือเพียงชื่อสตริงที่ชื่อนี้สตริงนี้สตริงนี้สตริงนี้สตริงนี้สตริงนี้สตริงนี้ส

ตัวอย่างข้อมูลผู้เล่น

กุญแจมูลค่า

31250608 และ

50

351675979

20

505306092

78000

ตัวอย่างโปรโมชัน

กุญแจมูลค่า

อีเวนต์พิเศษ

ปาร์ตี้ฤดูร้อน2

รหัสโปรโมชันที่ใช้งานอยู่

โบนัส123

สามารถเข้าถึงสถานที่ได้

จริง

ร้านค้า:

  1. สร้างตัวแปรที่มีชื่อว่า playerUserID คีย์จากนั้นใช้ playerGold เพื่อเก็บจำนวนเงินเริ่มต้นของผู้เล่น


    local DataStoreService = game:GetService("DataStoreService")
    local goldStore = DataStoreService:GetDataStore("PlayerGold")
    -- รหัสและมูลค่าของตัวเก็บข้อมูล
    local playerUserID = 505306092
    local playerGold = 250
  2. เพื่อบันทึกข้อมูลใน PlayerGold ร้านค้า, โทร Class.GlobalDataStore:SetAsync()|SetAsync ภายในโทรศัพท์ที่ป้องกัน, ผ่านตัวแปรและค่าที่สร้างขึ้นก่อนหน้านี้ เรียกว่า key และมีค่าประมาณ


    local DataStoreService = game:GetService("DataStoreService")
    local goldStore = DataStoreService:GetDataStore("PlayerGold")
    -- รหัสและมูลค่าของตัวเก็บข้อมูล
    local playerUserID = 505306092
    local playerGold = 250
    -- คีย์
    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(errorMessage)
    end

ฟังก์ชันเช่น SetAsync() เป็นการโทรเครือข่ายที่อาจจะล้มเหลวได้ในบางครั้ง ด้านบนแสดงให้เห็นว่า pcall() เกิดขึ้น

ในรูปแบบพื้นฐานที่สุด pcall() รับฟังก์ชันและส่งคืนสองค่า:

  • สถานะ ( boolean ) จะเป็นจริงหากคุณสั่งให้ฟังก์ชันนี้ทำงานโดยไม่มีข้อผิดพลาดหรือปลอมแปลง หรือ false อย่างอื่น
  • ค่าการกลับของฟังก์ชันหรือข้อความผิดพลาด

ในตัวอย่างด้านบนสถานะ ( setSuccess ) ได้รับการทดสอบในแถวที่ 12 และหาก SetAsync() ล้มเหลวด้วยเหตุผลใด ๆ ก็จะปรากฏ errorMessage ในหน้าต่างการออก

การอ่านข้อมูล

  1. ร้านค้าโปรดโทร GetAsync() ด้วยชื่อกุญแจที่ต้องการ


    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(errorMessage)
    end
    -- อ่านคีย์เก็บข้อมูล
    local getSuccess, currentGold = pcall(function()
    return goldStore:GetAsync(playerUserID)
    end)
    if getSuccess then
    print(currentGold)
    end
  2. เพื่อทดสอบสคริปต์, คลิก วิ่ง และสังเกต currentGold มูลค่าที่พิมพ์ออกไปที่ หน้าต่างการออก력 โปรดทราบว่ามันอาจใช้เวลาสองวินาทีเนื่องจากฟังก์ชันต้องเชื่อมต่อกับ

โครงการตัวอย่าง

ตอนนี้คุณเข้าใจการใช้งานของพื้นที่เก็บข้อมูลพื้นฐานแล้ว ลองทดสอบในเกมตัวอย่าง

ทองคำรุ่นที่สาม รวบรวมเหรียญทองมากที่สุดเท่าที่คุณจะทำได้เพื่อตั้งสถิติส่วนบุคคลที่คงอยู่ระหว่างเซสชันเกม

คุณยังสามารถแก้ไขเกมใน Studio และสำรวจสคริปต์ GoldManager ที่ปรับปรุงซึ่งรวมถึงการบันทึกข้อมูลอัตโนมัติและอื่น ๆ

Edit in Studio option from the experience's main page