รายการ สามารถผสานกับลูป, เช่น ในขณะที่ และ สำหรับ เพื่อทำซ้ำรหัสเดียวสำหรับแต่ละมีมารถจัดเก็บข้อมูลที่มีมาสามารถจับไฟไหม้หรือสร้างรายการของส่ว
เพื่อสำรวจการเชื่อมต่อผ่านคลาสสาย สร้างเส้นทางเชื่อมที่หายไปเมื่อชิ้นส่วนถูกวางในคลาสสายแล้วจากนั้นก็ทำให้หายไปหนึ่งโดยหนึ่ง
สแน็ปผ่านค่ายี่สาม
สำหรับโครงการนี้ ค้นหาหรือสร้างชุดของสามส่วนเพื่อทำให้มันหายไป ชุดต้องมีทั้งหมดสามส่วน
สร้างสามส่วน ตั้งชื่อส่วนในลำดับที่พวกเขาจะหายไป, ส่วน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 คือค่าแรกในรายการ เสร็จสิ้น: 1> #pathArray1> ขนาดของรายการนั้น
for partIndex = 1, #pathArray doendดังนั้นจึงมีความล่าช้าก่อนที่ส่วนหนึ่งจะหายไปในห่วงโซ่, เพิ่ม task.wait() โดยใช้ VANISH_RATE
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)endเพื่อให้ได้ส่วนหนึ่งที่หายไป, สร้างตัวแปรใหม่ที่มีชื่อว่า whichPart และตั้งให้เท่ากับ partsArray[partIndex] แล้ว, เพื่อให้ส่วนหนึ่งนั้นหายไป, ตั้งค่าคว
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endตรวจสอบว่าส่วนหนึ่งของเส้นทางหายไปเมื่อเวลาผ่านไป
เคล็ดลับการแก้ปัญหา
หากสะพานไม่ปรากฏ ตรวจสอบปัญหาที่อาจเกิดขึ้นด้านล่าง: ปัญหา: ชิ้นส่วนหายไปเร็วเกินไปหรือหายไปทั้งหมดในตอนเริ่มต้น
- ขึ้นอยู่กับว่าตัวละครของคุณโหลดเข้าสู่ประสบการณ์ได้อย่างรวดเร็วแค่ไหน ส่วนแรกอาจมองไม่เห็นได้ เช่น task.wait(2) ในตอนเริ่มต้นของสคริป
การเขียน Second Loop
ตอนนี้, ชิ้นส่วนจะหายไปตลอดไป เพื่อให้พวกเขาเกิดขึ้นอีกครั้ง, สร้างส่วนที่สองสำหรับห่วงโซ่ที่จะผ่านแต่ละชิ้นส่วนและทันทีทำให้แต่ละชิ้นส่วนเดินได้
หลังจากวงจรแรกเพิ่ม task.wait() เพื่อสร้างความล่าช้าสั้น ๆ ก่อนที่เส้นทางจะปรากฏขึ้นอีกครั้ง
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)บนคอมพิวเตอร์ของคุณเอง ลองเขียนโค้ดสองครั้งเพื่อให้เส้นทางสามารถใช้ได้อีกครั้งโดยการเปลี่ยนสมบัติภาพลายเส้นของแต่ละส่วนเป็น true และ Transparency เป็น 0 เมื่อเสร็จสิ้นให้ตรวจสอบงานของคุณ
-- รีเซ็ตเส้นทางโดยทำให้ชิ้นส่วนทั้งหมดเดินได้อีกครั้งfor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endย้อนกลับ
ทำซ้ำด้วย while ห่วง
ชิ้นส่วนหายไปและปรากฏขึ้นอีกครั้ง แต่เฉพาะครั้งเดียว เพื่อให้โค้ดที่ซ้ำซาก
ในตอนท้ายของสคริปต์, สร้างใหม่ while true do loop. จากนั้น, ย้ายทั้งสอง for ล็อปใน 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() หมายถึง "ค้นหา" สามารถใช้ได้เพื่อทำซ้ำการดำเนินการบนจำนวนมากของเหตุการณ์เช่นกันเช่นกันเช่นกันเ
นี่จะแสดงให้เห็นโดยการเพิ่มอนุภาคให้กับโฟลเดอร์ของชิ้นส่วนอย่างรวดเร็ว
ใน Workspace สร้างโฟลเดอร์ที่มีชื่อว่า PartsFolder เพิ่มจำนวนชิ้นส่วนตามที่คุณต้องการ
ใน ServerScriptService สร้างสคริปต์ใหม่และอ้างอิงไฟล์เรียบร้อย
ใช้ GetChildren() เพื่อรับรายการรายการทั้งหมดในโฟลเดอร์โดยอัตโนมัติ
local partsFolder = workspace.PartsFolder-- รับรายการอันละเอียดใน PartsFolderlocal partsArray = partsFolder:GetChildren()ใช้ in ipairs(ArrayToUse) กับ for ลูปเพื่อผ่านผ่านแผงลูกศรและเพิ่มอนุภาค
สคริปที่สำเร็จ-- รับรายการอันละเอียดใน PartsFolderlocal partsArray = partsFolder:GetChildren()-- เพิ่มอนุภาคให้กับทุกส่วนในคอลัมน์for index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
ทดสอบและดูว่าอนุภาคจะลอยขึ้นจากแต่ละส่วนในโฟลเดอร์
สรุป
สามารถผสานกับแมทริคเพื่อให้สามารถทำงานกับค่าใด ๆ ได้อย่างรวดเร็ว หากคุณต้องการที่จะมีการควบคุมที่แน่นอนเกี่ยวกับสิ่งที่เกิดขึ้นกับบางส่วนและในลำดับใด ๆ แมทริคจะต้องถูกเข้ารหัสด้วย
เพื่อทำงานกับหลายส่วนที่คำสั่งไม่สำคัญได้รับChildren() สามารถสร้างรายการของบุตรของตัวอักษรได้ โดยใช้ ipairs() รายการสามารถเรียกใช้ได้อย่างรวดเร็วโดยไม่ต้องรู้ขนาดรายการ