ทำการเปลี่ยนแปลงต่อ阵列

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

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

บทความนี้จะอธิบายฟังก์ชันที่สร้างไว้ล่วงหน้าสำหรับตารางเช่นเพิ่มและลบในขณะที่อธิบายวิธีการค้นหาค่า

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

เพิ่มค่าให้กับ阵列

เพื่อเพิ่มค่าใหม่ให้กับ阵列ใช้ table.insert(array, valueToInsert) .พารามิเตอร์ที่สองสามารถเป็นค่าใดก็ได้เช่นสตริง ตัวเลข หรือวัตถุทั้งหมด เช่น Player หรือ IntValue

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

  1. สร้าง阵列ว่างชื่อ playerItems ที่ว่างเปล่า


    playerItems = {}
  2. เพิ่มรายการสินค้าคงคลังในรายการโดยพิมพ์ table.insert() .ในเครื่องหมายวรรคที่สอง, พิมพ์ playerItems , ไอเท็ม


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping Bag")
    print(playerItems)
  3. ดำเนินโครงการ ในออกผล ขยายจุดสามจุด ... เพื่อดูตารางพิมพ์

ลบค่าออกจาก阵列

เพื่อลบค่า เช่นถ้าผู้เล่นใช้ไอเทมหรือบุคคลในรายการผู้เล่นที่ใช้งานอยู่ออกจากประสบการณ์ใช้ table.remove()ขึ้นอยู่กับพารามิเตอร์ที่ให้ไว้ฟังก์ชันสามารถลบค่าสุดท้ายของตารางหรือที่ดัชนีเฉพาะได้

ลบค่าสุดท้าย

อินสแตนซ์คลังไอเท็มหรือเลือกผู้เล่นคนแรกในรายการเพื่อลบค่าสุดท้ายในคอลเลกชันใช้ table.remove(arrayName)ในกรณีการใช้งานนี้ พารามิเตอร์เดียวที่จำเป็นคือตารางเอง

  1. ใช้รายการของไอเทมจากตัวอย่างก่อนหน้านี้ จากนั้นเพื่อลบค่าสุดท้ายออกจากตารางในกรณีนี้ "Sleeping Bag" ป้อน table.remove(playerItems)


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems)
    print(playerItems)
  2. ดำเนินโครงการ ในหน้าต่างเอาต์พุต ค่าสุดท้าย "Sleeping Bag" ไม่ควรพิมพ์

ลบโดยดัชนี

เพื่อลบค่าที่จุดเฉพาะในแอร์ราย์ให้ใส่พารามิเตอร์ที่สองเป็นดัชนีที่จะลบ เช่น table.remove(arrayName, 1)

  1. ใช้ตารางเดียวกัน, ประเภท table.remove() . ในพารามิเตอร์ใส่ชื่อของตารางและ 1 , ค่าที่จะลบ


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems, 1)
  2. ดำเนินโครงการ ตรวจสอบว่ามูลค่าแรก "ยา" ถูกลบออก

ค้นหาค่าในอาร์เรย์

เพื่อค้นหาค่าเฉพาะในอาร์เรย์ เช่น ชื่อผู้เล่นที่ชนะ ให้ใช้ฟังก์ชัน table.find()หรือคุณสามารถเขียนฟังก์ชันการค้นหาของคุณเองโดยใช้ลูป for และคำสั่ง if

ค้นหาและส่งคืนค่าเดียว

เพื่อค้นหาค่าในอาร์เรย์ สร้างฟังก์ชันชื่อ findValue() ที่ผ่านอาร์เรย์และหยุดครั้งแรกที่พบค่าที่ตรงกัน

เมื่อค้นหาค่าแล้ว ฟังก์ชันจะใช้คีย์วาร์ด return เพื่อส่งคืนดัชนีของค่านั้น ด้วยดัชนี คุณสามารถลบมันออกจากคอลเลกชันได้

  1. คัดลอกชุดตัวเลขที่ชื่อ playerItems ด้านล่าง


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. เขียนฟังก์ชันใหม่ชื่อ findValue() ด้วยพารามิเตอร์สองตัว:

    • whichArray - คอลเลกชันที่จะค้นหาผ่าน

    • itemName - สตริงเฉพาะที่จะตรวจสอบ


      local function findValue(whichArray, itemName)
      end
  3. ใน findValue() , ใช้ลูป for เพื่อตรวจสอบว่ามีค่าใดใน阵列ตรงกับ itemName หรือไม่หากค่าตรงกันใช้คีย์เวิร์ด return เพื่อคืนค่าที่พบใน currentIndex


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. ทดสอบฟังก์ชันการค้นหาโดยสร้างตัวแปรชื่อ valueFound และเรียก findValue()ส่งในรายการเพื่อค้นหาและมูลค่าที่ควรค้นหา รัน โค้ดเพื่อยืนยันว่าผลลัพธ์ที่คาดไว้คืออินเด็กซ์ 2


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    --ส่งมูลค่าของ currentIndex ย้อนกลับ
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Bread")
    print("The value is at index " .. valueFound)

ลบค่า

หากค่าถูกพบโดยใช้ฟังก์ชันค้นหา ค่านั้นสามารถลบได้ ตรวจสอบว่าค่าถูกพบด้วยคำสั่ง if หรือไม่

  1. ตรวจสอบว่ามีค่าอยู่ภายใน valueFound หรือไม่ หากมีให้ลบค่าโดยใช้ table.remove()


    if valueFound then
    table.remove(playerItems, valueFound)
    end
  2. พิมพ์อาร์เรย์โดยใช้รหัสด้านล่าง


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  3. ทดสอบและตรวจสอบว่าค่าแรก "Bread" ถูกลบออกจาก阵列ลองลบมูลค่าอื่นโดยเปลี่ยนพารามิเตอร์ที่สองใน findValue()

    สังเกตว่าเนื่องจากฟังก์ชันนี้ถูกเรียกเพียงครั้งเดียวเท่านั้น ตัวอย่างแรกของ "Bread" ถูกลบออกส่วนต่อไปจะครอบคลุมวิธีการค้นหาและลบทุกตัวอย่าง

ค้นหาและลบทั้งหมดของค่าที่เฉพาะเจาะจง

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

  1. ใช้阵列ชื่อ playerItems ที่มีอย่างน้อยสี่ค่าและชุดของ ซ้ำ


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. เพื่อผ่านทางรายการ สร้างลูป for ที่ไป ย้อนกลับ ผ่าน playerItems เริ่มต้นที่ #playerItems และเพิ่มขึ้นโดย -1


    for index = #playerItems, 1, -1 do
    end
  3. ในลูปใช้คำสั่ง if ไอเท็มplayerItems[index] เท่ากับ "Bread" และหากเป็นเช่นนั้นให้ลบรายการ


    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Bread" then
    table.remove(playerItems, index)
    end
    end
  4. ใช้รหัสด้านล่างเพื่อเพิ่มเวลารอบที่สองที่พิมพ์คอลเลกชัน


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  5. ดำเนินการตามสคริปต์และตรวจสอบว่ามีการลบค่าทั้งหมดที่ชื่อว่า "ขนมปัง"

สรุป

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

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

สามารถอ้างอิงเวอร์ชันสิ้นสุดของสคริปต์ได้ด้านล่าง

โครงการต่อไปนี้รวมถึงสคริปทั้งหมดในบทแนะนำนี้ ดาวน์โหลด ที่นี่ .

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