Nestschleifen ermöglichen es dir, Aufgaben in Batches zu wiederholen. Zum Beispiel, drei Schichten von sechs Cupcakes zu backen oder Waffen an Spieler auf zwei Teams zuzuweisen.
Wie verschachtelte Schleifen ausführen
Wenn Schleifen verschachtelt sind, gehen Skripte Zeile für Zeile, bis sie die nächste Schleife erreichen.Die innere Schleife läuft, bis ihre Bedingung erfüllt ist, bevor sie zur äußeren Schleife zurückkehrt.
Verschachtelte Schleifenlogik
Das folgende Diagramm zeigt die Schritte, die eine Schleife durchläuft.
| ![]() |
Verschachtelte Schleifenbeispiel
Verschachtelte Schleifen können etwas abstrakt erscheinen, also kann ein visuelles Beispiel helfen.Für diese Übung kopieren und fügen Sie ein Beispielskript ein und führen Sie es in Studio aus.Dieses Skript wird Türme von Teilen erstellen.Die äußere Schleife wird steuern, wie viele Teile hergestellt werden sollen, während die innere Schleife die tatsächliche Charge erstellt.
Erstellen Sie ein neues Skript in ServerScriptService mit dem Namen PartMaker. Kopieren Sie den Code unten.
local numberOfBatches = 7local partsPerBatch = 5local partsMade = 0-- Erstellt einen einzigen Würfellocal function createPart()local part = Instance.new("Part")part.Size = Vector3.new(2, 2, 2)part.CFrame = CFrame.new(20, 0, 20)part.Color = currentColorpart.Parent = workspaceend-- Äußere Schleifefor partBatch = 1, numberOfBatches doprint("Top outer loop: part batch " .. partBatch)currentColor = Color3.fromRGB(math.random(0, 255), math.random(0, 255), math.random(0, 255))-- Innerer Loopfor partNumber = 1, partsPerBatch docreatePart()print("Inner loop: part " .. partNumber)partsMade += 1task.wait(0.5)endprint("Bottom outer loop: " .. partsMade .. " parts made so far.")task.wait(2)endBeobachte, wie das Skript eine andere Charge farbiger Teile erzeugt.Nachdem es eine Charge durchlaufen hat, wird es für 2 Sekunden pausieren.Die Druckausgabe in der äußeren Schleife wird nur einmal pro abgeschlossener innere Schleife ausgeführt.
Verschachtelt für Schleifenturm
Jede Schleife hat ihren eigenen Codes, so kann sie für verschiedene Aufgaben verantwortlich sein.Eine Sache, die verschachtelte Schleifen tun können, ist, die Platzierung zu ändern, wo ein Objekt gespawnt wird, um einen Turm wie in diesem Video zu erstellen.Es gibt drei verschiedene Schleifen, eine für die Kontrolle, wo entlang der Breite, Länge und Höhe des Turms der Würfel entsteht.
Code ein Skript, das. PL: die Skripts
Um verschachtelte Schleifen zu üben, erstellen Sie ein Skript, das einen Turm von Würfeln erstellt.Für das Skript, das. PL: die Skriptsprogrammieren Sie zuerst eine Funktion, die einen einzigen Würfel erzeugt.Der Turm wird gebaut, indem diese Funktion wiederholt aufgerufen wird.
Konfiguriere das Skript, das. PL: die Skripts
Für das Skript, das. PL: die Skriptsprogrammieren Sie zuerst eine Funktion, die einen einzigen Würfel erzeugt. Der Turm wird gebaut, indem diese Funktion wiederholt aufgerufen wird.
Löschen das PartMaker-Skript oder deaktivieren Sie es (in den Skript-Eigenschaften, überprüfen Sie Deaktiviert).Wenn du das nicht tust, werden es zwei Skripte geben, die Teile gleichzeitig am selben Ort machen.
Erstellen Sie ein neues Skript mit dem Namen TowerBuilder. Fügen Sie Variablen für die Größe des Turms und der Kubusgröße oben hinzu.
local TOWER_SIZE = 4local CUBE_SIZE = 2Füge eine lokale Funktion namens makeCube() hinzu, die einen einzigen quadratischen Würfel mit CUBE_SIZE erstellt.
local TOWER_SIZE = 4local CUBE_SIZE = 2-- Erstellt einzelne Würfellocal function makeCube()local cube = Instance.new("Part")cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)endLege die Farbe des Würfels auf eine Variable fest, die in den verschachtelten Schleifen aktualisiert wird.
local function makeCube()local cube = Instance.new("Part")cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)cube.Color = currentColorendSchließlich, Eltern den neuen Kubus in den Arbeitsbereich, damit er angezeigt wird.
local function makeCube()local cube = Instance.new("Part")cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)cube.Color = currentColorcube.Parent = workspaceend
In verschiedenen Richtungen spawnen
Um einen Turm zu erstellen, spawnen Sie Würfel an bestimmten Punkten, indem Sie die X, Y, Z-Eigenschaften jedes neuen Würfels festlegen. X und Z sind nebeneinander. Y ist oben und unten.
In makeCube() , fügen Sie Parameter für spawnX , spawnY und spawnZ hinzu. Diese Zahlen legen den Spawn-Standort jedes neuen Cubes fest.
-- Erstellt einzelne Würfellocal function makeCube(spawnX, spawnY, spawnZ)local cube = Instance.new("Part")cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)cube.Color = currentColorcube.Parent = workspaceendInnerhalb der Funktion legen Sie die CFrame-Eigenschaft des Cubes auf eine neue CFrame mit den spawnX, spawnY und spawnZ Parametern fest.
local function makeCube(spawnX, spawnY, spawnZ)local cube = Instance.new("Part")cube.Size = Vector3.new(CUBE_SIZE, CUBE_SIZE, CUBE_SIZE)cube.Color = currentColorcube.CFrame = CFrame.new(spawnX, spawnY, spawnZ)cube.Parent = workspaceend
Spawn mit verschachtelten Schleifen
Das Skript wird insgesamt drei Schleifen haben, eine für die Länge, Breite und Höhe des Turms.Um einen ganzen Stockwerk vor dem Aufstieg abzuschließen, beginne mit der Festlegung der Y-Koordinate in der ersten, äußersten Schleife.
Unter der makeCube()-Funktion, erstelle eine for-Schleife, um festzulegen, wie hoch jeder Würfel gespawnt wird.
- Steuervariable : heightIndex = 1
- Endpunkt : TOWER_SIZE
- Innerhalb der Schleife fügen Sie hinzufügen: local spawnY = (Höhenindex - 1) * CUBE_SIZE
-- Baut Turmfor heightIndex = 1, TOWER_SIZE dolocal spawnY = (heightIndex - 1) * CUBE_SIZEendMit der ersten Schleife für die Höhe fertig, starte auf der zweiten.Innerhalb der ersten for-Schleife füge eine neue for-Schleife hinzu, um den Kubus entlang der Länge des Turms zu platzieren.
- Steuervariable : lengthIndex = 1
- Endpunkt : TOWER_SIZE
- Innerhalb dieser Schleife fügen Sie hinzufügen: local spawnX = lengthIndex * CUBE_SIZE
for heightIndex = 1, TOWER_SIZE dolocal spawnY = (heightIndex - 1) * CUBE_SIZEfor lengthIndex = 1, TOWER_SIZE dolocal spawnX = lengthIndex * CUBE_SIZEendendInnerhalb der zweiten Schleife füge eine dritte Schleife für die Turmbreite hinzu.In diesem letzten Schleifenruf makeCube() und übergeben Sie die X,Y, Z- Parameter.
- Steuervariable : widthIndex = 1
- Endpunkt : TOWER_SIZE
- Im Inneren der Schleife fügen Sie hinzufügen:
- local spawnZ = widthIndex * CUBE_SIZE
- makeCube(spawnX, spawnY, spawnZ)
- Eine Wartezeit von 0,25, damit Sie den Turm beim Bau beobachten können.
-- Baut Turmfor heightIndex = 1, TOWER_SIZE dolocal spawnY = (heightIndex - 1) * CUBE_SIZEfor lengthIndex = 1, TOWER_SIZE dolocal spawnX = lengthIndex * CUBE_SIZEfor widthIndex = 1, TOWER_SIZE dolocal spawnZ = widthIndex * CUBE_SIZEmakeCube(spawnX, spawnY, spawnZ)task.wait(0.25)endendendUm jede Etage eine zufällige Farbe zu haben, ändere currentColor zu zufälligen RGB Nummern in derselben Schleife, in der du eine neue Etage erstellst.
for heightIndex = 1, TOWER_SIZE dolocal spawnY = (heightIndex - 1) * CUBE_SIZEcurrentColor = Color3.fromRGB(math.random(0, 255), math.random(0, 255), math.random(0, 255))for lengthIndex = 1, TOWER_SIZE dolocal spawnX = lengthIndex * CUBE_SIZEfor widthIndex = 1, TOWER_SIZE dolocal spawnZ = widthIndex * CUBE_SIZEmakeCube(spawnX, spawnY, spawnZ)task.wait(0.25)endendendFühren Sie das Projekt aus und warten Sie, bis ein voller Turm ohne Fehler im Ausgabe-Fenster erstellt wurde.
Optionale Herausforderungen
Im Folgenden sind verschiedene selbstgesteuerte Herausforderungen aufgeführt, die verschachtelte Schleifen auf unterschiedliche Weise verwenden. Versuche und programmiere selbst, bevor du die Lösung betrachtest.
Verbleichte Teile
Wenn der Turm gebaut wird, verschwinden die Teile in Transparenz von links nach rechts.

Die Code-Lösung ist unten.
local TOWER_SIZE = 6
local CUBE_SIZE = 2
-- Erstellt einzelne Würfel
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 -- Setzt Transparenz
cube.CFrame = CFrame.new(spawnX, spawnY, spawnZ)
cube.Parent = workspace
end
-- Baut Turm
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 --Aktualisiert jede Schleife, die mit 0 beginnt
for widthIndex = 1, TOWER_SIZE do
local spawnZ = widthIndex * CUBE_SIZE
makeCube(spawnX, spawnY, spawnZ)
task.wait(0.05)
end
end
end
Regen Sie Objekte herunter
Statt Teile zu versuchen, versuche, ein echtes Objekt zu spawnen. Das Beispiel hier verwendet Cupcakes.
Auf besitzenFaust, sieh ab, ob du kannst:
- Erstelle ein Objekt aus Basisteilen. Stelle sicher, alle Teile zusammen zu schweißen, damit das Objekt nicht auseinanderfällt.
- Platziere das Objekt in ServerStorage
- Modifizieren Sie den PartMaker, der im verschachtelten Schleifbeispiel gefunden wird, um Ihr Objekt anstelle von Teilen zu verwenden.
Ein Beispiel wird hier angezeigt.
Eine Code-Lösung mit Cupcakes ist enthalten.
local numberOfBatches = 30
local cupcakesPerBatch = 6
local cupcakesBaked = 0
--Stellt einen einzelnen Cupcake her
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
-- Äußere Schleife
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))
-- Innerer Loop
for cupcakeNumber = 1, cupcakesPerBatch do
makeCupcake()
print("Inner loop: cupcake " .. cupcakeNumber)
-- Verfolgungs-Muffins gebacken
cupcakesBaked += 1
task.wait(0.5)
end
print("Bottom outer loop: " .. cupcakesBaked .. " cupcakes baked so far.")
end
Übersicht
Um komplexere Aufgaben zu erledigen, finden Coder es hilfreich, mehrere Schleifen und sogar verschiedene Arten von Schleifen zu kombinieren.Alle Schleifen können verschachtelt werden, d. h. eine Schleife ist in einer anderen.Verschachtelte Schleifen folgen der gleichen Logik wie jede andere Schleife.Es beginnt in der ersten, äußersten Schleife, führt Aufgaben durch innere Schleifen und schließt sich dann auf die erste Schleife zurück, wenn geltend.