แอร์ราย สามารถรวมกับลูปได้ เช่น ในขณะที่ และ สำหรับ เพื่อทำซ้ำโค้ดเดียวกันสำหรับแต่ละค่าที่จัดเรียงตัวอย่างเช่น การเทเลพอร์ตผู้เล่นแต่ละคนในอาร์เรย์ไปยังสถานที่ใหม่หรือทำให้อาร์เรย์ของชิ้นส่วนจับไฟ
เพื่อสํารวจการเล่นซ้ําผ่านคอลเลกชัน สร้างเส้นทางสะพานที่หายไปซึ่งชิ้นส่วนจะถูกวางลงในคอลเลกชันแล้วทําให้หายไปหนึ่งโดยหนึ่ง
ผ่านลูปผ่านอาร์เรย์
สำหรับโครงการค้นหาหรือสร้างชุดสามส่วนเพื่อทำให้หายไป ส่วนต้องทั้งหมดต้องถูกยึด
สร้างสามส่วน ตั้งชื่อส่วนตามลำดับที่พวกเขาควรหายไป ส่วนที่ 1, ส่วนที่ 2, ส่วนที่ 3
ใน ServerScriptService ใส่สคริปต์ใหม่และสร้าง阵列เพื่อจัดเก็บชิ้นส่วน
local pathArray = {}ในแต่ละบรรทัดเดียว พิมพ์ชื่อส่วนตามลำดับที่ควรหายไป อ่านแล้ว
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
ใช้ลูป for กับ阵列
ใช้ลูป for เพื่อไปผ่านคอลเลกชันและควบคุมความเร็วที่ชิ้นส่วนจะหายไปในลำดับที่ชิ้นส่วนถูกจัดเรียงภายในคอลเลกชัน
เพื่อควบคุมความถี่ที่ชิ้นหายไปในเวลาไม่กี่วินาที สร้างตัวแปรชื่อ VANISH_RATE สำหรับการทดสอบ เป็นการดีที่สุดที่จะเก็บไว้เป็นจํานวนเล็กน้อย
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}สร้างลูป for กำลังติดตาม: เริ่มต้น: partIndex = 1 , ดัชนีของค่าแรกในคอลเลกชัน สิ้นสุด: #pathArray , ขนาดของ阵列นั้น
for partIndex = 1, #pathArray doendดังนั้นจึงมีความล่าช้าก่อนที่ส่วนจะหายไปในลูป, เพิ่ม task.wait() โดยใช้ VANISH_RATE .
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)endเพื่อให้ส่วนหนึ่งหายไป สร้างตัวแปรใหม่ชื่อ whichPart และตั้งค่าเท่ากับ partsArray[partIndex]จากนั้นเพื่อที่จะหายไปส่วนนั้นให้ตั้งค่าคุณสมบัติ CanCollide เป็น false และ Transparency เป็น 1
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endตรวจสอบว่าส่วนต่างๆ ของเส้นทางจะหายไปตามเวลา
เคล็ดลับการแก้ปัญหา
หากสะพานไม่หายไปตรวจสอบปัญหาที่เป็นไปได้ด้านล่าง: ปัญหา: ชิ้นส่วนหายไปเร็วเกินไปหรือหายไปทั้งหมดในตอนเริ่มต้น
- ขึ้นอยู่กับว่าตัวละครของคุณโหลดเข้าสู่ประสบการณ์เร็วแค่ไหน ส่วนแรกอาจจะมองไม่เห็นแล้วเพื่อแก้ปัญหานี้ เพิ่มการรอเล็กน้อย เช่น task.wait(2) ที่จุดเริ่มต้นของสคริปต์
เขียนลูปที่สอง
ตอนนี้ชิ้นส่วนจะหายไปตลอดไปเพื่อทำให้พวกเขาปรากฏขึ้นอีกครั้ง สร้างลูปที่สองที่จะผ่านแต่ละส่วนและทําให้แต่ละชิ้นเดินได้ทันที
หลังจากลูปแรกแล้วเพิ่ม task.wait() เพื่อสร้างช่วงเวลาสั้น ๆ ก่อนที่เส้นทางจะปรากฏอีกครั้ง
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)บนตัวเอง , ลองเขียนโค้ดซ้ำสำหรับลูปที่ทำให้เส้นทางใช้งานได้อีกครั้งโดยการเปลี่ยนคุณสมบัติ CanCollide ของแต่ละส่วนเป็นจริงและความโปร่งใสเป็น 0เมื่อเสร็จแล้ว ตรวจสอบงานของคุณกับรหัสด้านล่าง
-- รีเซ็ตเส้นทางโดยทำให้ชิ้นส่วนทั้งหมดสามารถเดินได้อีกครั้งfor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endย้อนกลับ
ทำซ้ำด้วยลูป while
ส่วนจะหายไปและปรากฏขึ้นอีกครั้ง แต่เพียงครั้งเดียว เพื่อให้โค้ดยังคงทำซ้ำต่อไป รวบรวมโค้ดทั้งหมดภายในลูป while
ที่ด้านล่างของสคริปต์สร้างลูปใหม่ในขณะที่จริงทำซ้ำ จากนั้น ย้ายทั้งสองไปยังลูปในขณะที่ทำซ้ำ
while true do-- ทำให้ส่วนหนึ่งหายไปจากคลังในลำดับfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- รอเป็นเวลาหนึ่งวินาทีก่อนที่จะทำให้เส้นทางปรากฏอีกครั้งtask.wait(1)-- รีเซ็ตเส้นทางโดยทำให้ชิ้นส่วนทั้งหมดสามารถเดินได้อีกครั้งfor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendตรวจสอบว่าเมื่อทุกชิ้นส่วนหายไปแล้วพวกมันจะปรากฏขึ้นอีกครั้ง
สามารถดาวน์โหลดเวอร์ชันสิ้นสุดของโครงการได้
สคริปต์สําเร็จ
local VANISH_RATE = 1.0local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}while true do-- ทำให้ส่วนหนึ่งหายไปจากคลังในลำดับfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- รอเป็นเวลาหนึ่งวินาทีก่อนที่จะทำให้เส้นทางปรากฏอีกครั้งtask.wait(1.0)-- รีเซ็ตเส้นทางโดยทำให้ชิ้นส่วนทั้งหมดสามารถเดินได้อีกครั้งfor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend
เลขคู่และ ipairs()
ipairs() ใช้กับ เวกเตอร์ .ตัว "i" ใน ipairs() ยืนหมายถึง "ดัชนี" ipairs() สามารถใช้เพื่อทำซ้ำการดำเนินการบนจํานวนมากของวัตถุได้อย่างรวดเร็ว เช่น กล่องที่เต็มไปด้วยชิ้นส่วน
จะแสดงโดยการเพิ่มอนุภาคอย่างรวดเร็วให้กับโฟลเดอร์ทั้งหมดของชิ้นส่วน
ในพื้นที่ทำงาน สร้างโฟลเดอร์ชื่อ PartsFolder เพิ่มชิ้นส่วนเท่าที่คุณต้องการ
ใน ServerScriptService สร้างสคริปต์ใหม่และอ้างอิงไฟล์โฟลเดอร์
ใช้ GetChildren() เพื่อรับรายการแอร์ราย์โดยอัตโนมัติทั้งหมดของวัตถุในโฟลเดอร์
local partsFolder = workspace.PartsFolder-- รับรายการอาร์เรย์ที่ระบุชิ้นส่วนในโฟลเดอร์ชิ้นส่วนlocal partsArray = partsFolder:GetChildren()ใช้ in ipairs(ArrayToUse) กับลูป for เพื่อผ่าน partsArray และเพิ่มอนุภาค
สคริปต์สําเร็จ-- รับรายการอาร์เรย์ที่ระบุชิ้นส่วนในโฟลเดอร์ชิ้นส่วนlocal partsArray = partsFolder:GetChildren()-- เพิ่มอนุภาคให้กับทุกส่วนในคอลเลกชันfor index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
ทดสอบและดูอนุภาคลอยขึ้นจากทุกส่วนในโฟลเดอร์
สรุป
ลูปสามารถรวมกับอาร์เรย์เพื่อทำงานกับจํานวนค่าใดก็ได้อย่างรวดเร็วหากต้องการมีการควบคุมอย่างแม่นยำเกี่ยวกับสิ่งที่เกิดขึ้นกับส่วนไม่กี่และในลำดับที่แน่นอน จำเป็นต้องหาร์ดโค้ดคอลเลกชันด้วยค่าที่เฉพาะเจาะจง
เพื่อทำงานกับส่วนหลายแห่งที่คำสั่งซื้อไม่สำคัญ GetChildren() สามารถสร้าง阵列ของบุตรของวัตถุได้โดยใช้ ipairs() รายการสามารถเรียกซ้ำได้อย่างรวดเร็วโดยไม่ต้องรู้ขนาดของอาร์เรย์