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

*เนื้อหานี้แปลโดยใช้ 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 เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ