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

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

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

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

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

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

  1. สร้างสามส่วน ตั้งชื่อส่วนตามลำดับที่พวกเขาควรหายไป ส่วนที่ 1, ส่วนที่ 2, ส่วนที่ 3

  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) ที่จุดเริ่มต้นของสคริปต์

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

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

  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. บนตัวเอง , ลองเขียนโค้ดซ้ำสำหรับลูปที่ทำให้เส้นทางใช้งานได้อีกครั้งโดยการเปลี่ยนคุณสมบัติ CanCollide ของแต่ละส่วนเป็นจริงและความโปร่งใสเป็น 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 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. ในพื้นที่ทำงาน สร้างโฟลเดอร์ชื่อ PartsFolder เพิ่มชิ้นส่วนเท่าที่คุณต้องการ

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

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


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

    สคริปต์สําเร็จ

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

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

สรุป

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

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