ห่วงเหล็ก

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

ห่วงโซ่ช่วยให้คุณทำซ้ำงานในชุด เช่น การอบสามชุดของหกคัพเค้กหรือการเรียกร้องอาวุธให้กับผู้เล่นในสองทีม

วิธีการทำงานของล็อปที่เหมาะ

เมื่อมีคําว่าซึ่งกันและกันเมื่อเรียงต่อกันจนกว่าจะถึงคําสั่งต่อไป คําสั่งภายในจะดําเนินการจนกว่าจะตรงตามเงื่อนไขก่อนที่จะกลับไปที่คําสั่งภายนอก

การจัดการของเวลาที่เกี่ยวข้อง

ตัวอักษรต่อไปแสดงขั้นตอนที่วงแหวนใช้

    วงจรภายนอก: รหัสวิ่งตามสายจนกว่าจะถึงวงจรภายใน วงจรภายนอก: รหัสวิ่งตามสายจนกว่าจะถึงวงจรภายใน วงจรภายนอก: รหัสวิ่งตามสายจนกว่

ตัวอย่างวงจรที่เหมาะสม

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

  1. สร้างสคริปต์ใหม่ใน ServerScriptService ที่มีชื่อว่า PartMaker คัดลอกโค้ดด้านล่าง


    local numberOfBatches = 7
    local partsPerBatch = 5
    local partsMade = 0
    -- สร้างลูกบาศก์เดียว
    local function createPart()
    local part = Instance.new("Part")
    part.Size = Vector3.new(2, 2, 2)
    part.CFrame = CFrame.new(20, 0, 20)
    part.Color = currentColor
    part.Parent = workspace
    end
    -- ห่วงด้านนอก
    for partBatch = 1, numberOfBatches do
    print("Top outer loop: part batch " .. partBatch)
    currentColor = Color3.fromRGB(math.random(0, 255), math.random(0, 255), math.random(0, 255))
    -- ห่วงโซ่ภายใน
    for partNumber = 1, partsPerBatch do
    createPart()
    print("Inner loop: part " .. partNumber)
    partsMade += 1
    task.wait(0.5)
    end
    print("Bottom outer loop: " .. partsMade .. " parts made so far.")
    task.wait(2)
    end
  2. ดูสคริปต์เริ่มต้นชุดอื่น ๆ ของชิ้นส่วนสี หลังจากผ่านแต่ละชุด มันจะหยุดเป็นเวลา 2 วินาที ประกาศพิมพ์ในห่วงภายนอกจะดำเนินการเฉพาะครั้งเดียวต่อการเสร็จสิ้นแต่ละห่วง

ติดตั้งสำหรับหอคอยเหล่า

รหัสหนึ่งสิ่งที่เรียงลำดับของห่วงสามารถทำได้คือเปลี่ยนตำแหน่งที่วัตถุปรากฏขึ้นเพื่อสร้างหอค

การเขียนสคริปต์ Cube Maker

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

การติดตั้งสคริปต์

สำหรับสคริปต์ของหอคอยลูกบาศก์, ให้รหัสสัญลักษณ์เดียวที่สร้างลูกบาศก์เดียว หอคอยจะถูกสร้างโดยการเรียกใช้รหัสนี้ซ้ำแล้วซ้ำ

  1. ลบ สคริปต์ PartMaker หรือปิดมัน (ในโปรไฟล์สคริปต์ตรวจสอบว่า ปิด) หากคุณไม่ได้ลบสคริปต์อื่น ๆ จะมีสคริปต์ที่ทำงานอยู่สองสคริปต์ในเวลาเดียวกันในสถานที่เดียวกัน

  2. สร้างสคริปต์ใหม่ที่มีชื่อว่า TowerBuilder เพิ่มตัวแปรสำหรับขนาดของหอคอยและขนาดของลูกบาศก์ในด้านบน


    local TOWER_SIZE = 4
    local CUBE_SIZE = 2
  3. เพิ่มฟังก์ชันในพื้นที่ชื่อว่า makeCube() ที่สร้างลูกบาศก์สี่เหลี่ยมผืนเดียวโดยใช้ CUBE_SIZE


    local TOWER_SIZE = 4
    local CUBE_SIZE = 2
    -- สร้างลูกบาศก์แต่ละ
    local function makeCube()
    local cube = Instance.new("Part")
    cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)
    end
  4. ตั้งสีของลูกบาศก์เป็นสีที่ปรับแก้ได้ซึ่งจะปรับแก้ได้ในลำดับที่เรียงซ้อน


    local function makeCube()
    local cube = Instance.new("Part")
    cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)
    cube.Color = currentColor
    end
  5. สุดท้าย, พ่อ ลูกชายใหม่ในพื้นที่ทำงานเพื่อให้มันดู


    local function makeCube()
    local cube = Instance.new("Part")
    cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)
    cube.Color = currentColor
    cube.Parent = workspace
    end

เกิดขึ้นในทิศทางที่แตกต่างกัน

เพื่อสร้างหอคอยให้เรียกลูกบาศก์ที่จุดต่างๆ โดยการตั้งค่า X, Y, Z ของแต่ละลูกบาศก์ใหม่ X และ Z อยู่ด้านข้าง

  1. ใน makeCube() เพิ่มตัวอักษรสำหรับ spawnX``spawnY และ 1> spawnZ1> ตัวเลขเหล่านี้จะตั้งตำแหน่งการเรียกแต่ละลูกบาศก์ใหม่


    -- สร้างลูกบาศก์แต่ละ
    local function makeCube(spawnX, spawnY, spawnZ)
    local cube = Instance.new("Part")
    cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)
    cube.Color = currentColor
    cube.Parent = workspace
    end
  2. ภายในฟังก์ชันตั้งค่าค่าโครงสร้าง CFrame ของ Cube ให้เป็น CFrame ใหม่โดยใช้ spawnX , spawnY , spawnZ พารามิเตอร์


    local function makeCube(spawnX, spawnY, spawnZ)
    local cube = Instance.new("Part")
    cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)
    cube.Color = currentColor
    cube.CFrame = CFrame.new(spawnX, spawnY, spawnZ)
    cube.Parent = workspace
    end

การเรียกใช้ด้วยค่าเริ่มต้น

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

  1. ภายใต้การใช้งาน makeCube() ฟังก์ชัน สร้าง for ของลูปเพื่อตั้งค่าว่า สูง แต่ละจุดเกิดของลูกบาศก์

    • ควบคุมแปรผัน : heightIndex = 1
    • จุดสิ้นสุด : TOWER_SIZE
    • ในล็อป, เพิ่ม: local spawnY = ( heightIndex - 1) * CUBE_SIZE

    -- สร้างหอคอย
    for heightIndex = 1, TOWER_SIZE do
    local spawnY = (heightIndex - 1) * CUBE_SIZE
    end
  2. เมื่อเสร็จสิ้นกับวงจรแรกสำหรับความสูงเริ่มต้นในวงจรที่สอง ภายในวงจรแรกเพิ่มวงจรใหม่สำหรับสถานที่ที่จะวางลูกบาศก์ในความยาวของหอคอย

    • ควบคุมตัวแปร : lengthIndex = 1
    • จุดสิ้นสุด : TOWER_SIZE
    • ในล็อปนั้นเพิ่ม: local spawnX = lengthIndex * CUBE_SIZE

    for heightIndex = 1, TOWER_SIZE do
    local spawnY = (heightIndex - 1) * CUBE_SIZE
    for lengthIndex = 1, TOWER_SIZE do
    local spawnX = lengthIndex * CUBE_SIZE
    end
    end
  3. ใน วงแหวนที่สอง เพิ่ม สาม สำหรับวงแหวนสำหรับ ความกว้าง ของหอคอย ในวงแหวนนี้สุดท้าย โทร 1> makeCube()1> และผ่านตัวแปร X, Y, Z

    • ควบคุมแปรผัน : widthIndex = 1
    • จุดสิ้นสุด : TOWER_SIZE
    • เพิ่ม:
      • local spawnZ = widthIndex * CUBE_SIZE
      • makeCube(spawnX, spawnY, spawnZ)
      • เวลารอ 0.25 วินาทีเพื่อให้คุณสามารถดูหอคอยได้

    -- สร้างหอคอย
    for heightIndex = 1, TOWER_SIZE do
    local spawnY = (heightIndex - 1) * CUBE_SIZE
    for lengthIndex = 1, TOWER_SIZE do
    local spawnX = lengthIndex * CUBE_SIZE
    for widthIndex = 1, TOWER_SIZE do
    local spawnZ = widthIndex * CUBE_SIZE
    makeCube(spawnX, spawnY, spawnZ)
    task.wait(0.25)
    end
    end
    end
  4. เพื่อให้แต่ละชั้นเป็นสีสันแบบสุ่ม เปลี่ยน currentColor เป็นตัวเลขสุ่ม RGB ในสายเครื่องมือในเวลาเดียวกันที่คุณสร้างชั้นใหม่


    for heightIndex = 1, TOWER_SIZE do
    local spawnY = (heightIndex - 1) * CUBE_SIZE
    currentColor = Color3.fromRGB(math.random(0, 255), math.random(0, 255), math.random(0, 255))
    for lengthIndex = 1, TOWER_SIZE do
    local spawnX = lengthIndex * CUBE_SIZE
    for widthIndex = 1, TOWER_SIZE do
    local spawnZ = widthIndex * CUBE_SIZE
    makeCube(spawnX, spawnY, spawnZ)
    task.wait(0.25)
    end
    end
    end
  5. ดำเนินโครงการและรอให้เห็นว่ามีการสร้างหอคอยเต็มแล้วโดยไม่มีข้อผิดพลาดใด ๆ ในหน้าต่างการออก

ความท้าทายที่อาจเกิดขึ้น

ด้านล่างนี้เป็นความท้าทายที่นำทางตัวเองที่ใช้วงจรที่เรียงซ้อนกันอย่างแตกต่างกัน ลองให้โค้ดด้วยตัวคุณเองก่อนที่จะดูที่แกนหลัก

ออกอาจออก

เมื่อสร้างหอคอยแล้ว ให้ชิ้นส่วนมีความโปร่งใสออกไปจากด้านซ้ายไปขวา

โซลูชันรหัสอยู่ด้านล่าง


local TOWER_SIZE = 6
local CUBE_SIZE = 2
-- สร้างลูกบาศก์แต่ละ
local function makeCube(spawnX, spawnY, spawnZ)
local cube = Instance.new("Part")
cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)
cube.Color = currentColor
cube.Transparency = cubeTransparency -- ตั้งค่าความโปร่งใส
cube.CFrame = CFrame.new(spawnX, spawnY, spawnZ)
cube.Parent = workspace
end
-- สร้างหอคอย
for heightIndex = 1, TOWER_SIZE do
local spawnY = (heightIndex - 1) * CUBE_SIZE
currentColor = Color3.fromRGB(math.random(0, 255), math.random(0, 255), math.random(0, 255))
for lengthIndex = 1, TOWER_SIZE do
local spawnX = lengthIndex * CUBE_SIZE
cubeTransparency = (lengthIndex - 1) * 0.10 --อัปเดตทุกๆ ห่วงโซ่ที่เริ่มต้นที่ 0
for widthIndex = 1, TOWER_SIZE do
local spawnZ = widthIndex * CUBE_SIZE
makeCube(spawnX, spawnY, spawnZ)
task.wait(0.05)
end
end
end

วัตถุที่ตก

แทนที่จะเป็นชิ้นส่วน ลองสร้างวัตถุจริงดู ตัวอย่างที่นี่ใช้คัพเค้ก

ด้วยตัวคุณเองว่าคุณสามารถ:

  • สร้างวัตถุจากชิ้นส่วนพื้นฐาน ตรวจสอบให้แน่ใจว่าคุณต้องเชื่อมต่อทุกชิ้นส่วนเพื่อให้วัตถุไม่ล่มสลาย
  • วางวัตถุใน ServerStorage
  • แก้ไข PartMaker ที่พบใน ตัวอย่าง Nested Loop เพื่อใช้วัตถุของคุณแทนที่จะเป็นชิ้นส่วน

ตัวอย่างจะปรากฏที่นี่

มีการแก้ปัญหาด้วยคัพเค้ก


local numberOfBatches = 30
local cupcakesPerBatch = 6
local cupcakesBaked = 0
--ทำคัพเค้กเดี่ยว
local function makeCupcake()
local ServerStorage = game:GetService("ServerStorage")
local cupcake = ServerStorage.Cupcake:Clone()
local cup = cupcake.Cup
local frosting = cupcake.Frosting
cupcake:SetPrimaryPartCFrame(CFrame.new(0, 20, 0) * CFrame.Angles(0, 0, -90))
frosting.Color = frostingColor
cup.Color = cupColor
cupcake.Parent = workspace
end
-- ห่วงด้านนอก
for cupcakeBatch = 1, numberOfBatches do
print("Top outer loop: cupcake batch " .. cupcakeBatch)
frostingColor = Color3.fromRGB(math.random(0, 255), math.random(0, 255), math.random(0, 255))
cupColor = Color3.fromRGB(math.random(0, 255), math.random(0, 255), math.random(0, 255))
-- ห่วงโซ่ภายใน
for cupcakeNumber = 1, cupcakesPerBatch do
makeCupcake()
print("Inner loop: cupcake " .. cupcakeNumber)
-- แทร็ก muffins อบ
cupcakesBaked += 1
task.wait(0.5)
end
print("Bottom outer loop: " .. cupcakesBaked .. " cupcakes baked so far.")
end

สรุป

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