ลูปและอาเรย์

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

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

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

วนลูปผ่านอาเรย์

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

  1. สร้างชิ้นส่วนสามชิ้น ตั้งชื่อชิ้นส่วนตามลำดับที่ควรจะหายไป ได้แก่ Part1, Part2, Part3

  2. ใน ServerScriptService ให้แทรกสคริปต์ใหม่และสร้างอาเรย์เพื่อจัดเก็บชิ้นส่วน


    local pathArray = {
    }
  3. ในแต่ละบรรทัด ให้พิมพ์ชื่อของชิ้นส่วนตามลำดับที่ควรจะหายไป การใช้บรรทัดใหม่สำหรับแต่ละค่าจะทำให้อ่านง่ายขึ้น


    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3,
    }

ใช้ลูป for กับอาเรย์

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

  1. เพื่อควบคุมว่าชิ้นส่วนจะหายไปบ่อยแค่ไหนในระยะเวลาหลายวินาที ให้สร้างตัวแปรชื่อว่า VANISH_RATE สำหรับการทดสอบ ควรรักษาไว้ในจำนวนที่เล็กที่สุด


    local VANISH_RATE = 1.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. สร้างลูป for ด้วยสิ่งต่อไปนี้: เริ่มต้น: partIndex = 1 ดัชนีของค่าตัวแรกในอาเรย์ สิ้นสุด: #pathArray ขนาดของอาเรย์นั้น


    for partIndex = 1, #pathArray do
    end
  3. เพื่อให้มีการหน่วงเวลาก่อนที่ชิ้นส่วนจะหายไป ให้เพิ่ม task.wait() โดยใช้ VANISH_RATE ในลูป


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    end
  4. เพื่อให้ชิ้นส่วนหายไป ให้สร้างตัวแปรใหม่ชื่อว่า whichPart และตั้งค่าให้เท่ากับ partsArray[partIndex] จากนั้น เพื่อให้ชิ้นส่วนนั้นหายไป ให้ตั้งค่า CanCollide ของมันเป็น false และ Transparency เป็น 1


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
  5. ตรวจสอบว่าชิ้นส่วนของเส้นทางหายไปตามเวลา

เคล็ดลับการแก้ปัญหา

หากสะพานไม่หายไป ให้ตรวจสอบปัญหาที่เป็นไปได้ด้านล่าง:

ปัญหา: ชิ้นส่วนหายไปเร็วเกินไปหรือหายไปทั้งหมดในตอนเริ่มต้น

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

เขียนลูปที่สอง

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

  1. หลังจากลูปแรก ให้เพิ่ม task.wait() เพื่อสร้างการหน่วงระยะเวลาสั้น ๆ ก่อนไปยังเส้นทางที่กลับมา


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    task.wait(1)
  2. ทำด้วยตัวเอง ลองเขียนลูป for ที่สองเพื่อทำให้เส้นทางกลับมาใช้งานได้อีกครั้งโดยการเปลี่ยนแปลงค่าของ CanCollide ของแต่ละชิ้นส่วนเป็น true และ Transparency เป็น 0 เมื่อเสร็จแล้ว ให้ตรวจสอบงานของคุณกับโค้ดด้านล่าง


    -- รีเซ็ตเส้นทางโดยทำให้ชิ้นส่วนทั้งหมดกลับมาใช้งานได้อีกครั้ง
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. ทดสอบโปรเจ็กต์เพื่อยืนยันว่าชิ้นส่วนทั้งหมดหายไปแล้วจะกลับมา

ทำซ้ำด้วยลูป while

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

  1. ที่ด้านล่างของสคริปต์ ให้สร้างลูป while true do ใหม่ จากนั้น ย้ายทั้งสอง ลูป for ไปยังลูป while


    while true do
    -- ทำให้ชิ้นส่วนหายไปจากอาเรย์ตามลำดับ
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- รอประมาณหนึ่งวินาทีก่อนที่จะทำให้เส้นทางกลับมา
    task.wait(1)
    -- รีเซ็ตเส้นทางโดยทำให้ชิ้นส่วนทั้งหมดกลับมาใช้งานได้อีกครั้ง
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. ตรวจสอบว่าชิ้นส่วนทั้งหมดหายไปแล้วกลับมา

คุณสามารถดาวน์โหลดเวอร์ชันที่เสร็จสมบูรณ์ของโปรเจ็กต์นี้

สคริปต์ที่เสร็จสมบูรณ์

local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- ทำให้ชิ้นส่วนหายไปจากอาเรย์ตามลำดับ
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- รอประมาณหนึ่งวินาทีก่อนที่จะทำให้เส้นทางกลับมา
task.wait(1.0)
-- รีเซ็ตเส้นทางโดยทำให้ชิ้นส่วนทั้งหมดกลับมาใช้งานได้อีกครั้ง
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

อาเรย์และ ipairs()

ipairs() ใช้ร่วมกับ อาเรย์ "i" ใน ipairs() ย่อมาจาก "ดัชนี" สามารถใช้ ipairs() เพื่อทำซ้ำการดำเนินการอย่างรวดเร็วกับวัตถุจำนวนมาก เช่น โฟลเดอร์ที่เต็มไปด้วยชิ้นส่วน

นี่จะแสดงให้เห็นโดยการเพิ่มอนุภาคลงในโฟลเดอร์ของชิ้นส่วนทั้งหมดอย่างรวดเร็ว

  1. ใน Workspace ให้สร้างโฟลเดอร์ชื่อ PartsFolder เพิ่มชิ้นส่วนตามที่คุณต้องการ

  2. ใน ServerScriptService ให้สร้างสคริปต์ใหม่และอ้างอิงโฟลเดอร์

  3. ใช้ GetChildren() เพื่อทำการดึงอาเรย์ที่บันทึกรายการของวัตถุทั้งหมดในโฟลเดอร์โดยอัตโนมัติ


    local partsFolder = workspace.PartsFolder
    -- รับอาเรย์ที่บันทึกรายการชิ้นส่วนใน PartsFolder
    local partsArray = partsFolder:GetChildren()
  4. ใช้ in ipairs(ArrayToUse) ร่วมกับลูป for เพื่อไปผ่าน partsArray และเพิ่มอนุภาค

    สคริปต์ที่เสร็จสมบูรณ์

    -- รับอาเรย์ที่บันทึกรายการชิ้นส่วนใน PartsFolder
    local partsArray = partsFolder:GetChildren()
    -- เพิ่มอนุภาคลงในทุกชิ้นส่วนในอาเรย์
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

ทดสอบการเล่นเกมและดูอนุภาคลอยขึ้นจากทุกชิ้นส่วนในโฟลเดอร์

สรุป

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

ในการทำงานกับชิ้นส่วนจำนวนมากที่ไม่เกี่ยวกับลำดับ สามารถใช้ GetChildren() เพื่อสร้างอาเรย์ของลูกของวัตถุ โดยการใช้ ipairs() รายการสามารถถูกวนซ้ำได้อย่างรวดเร็วโดยไม่ต้องรู้ขนาดของอาเรย์

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