Schleifen in Unity sind eine Möglichkeit, Aktionen im Code zu wiederholen — zum Beispiel Gegner der Reihe nach erscheinen zu lassen, Inventargegenstände durchzugehen oder zu warten, bis etwas passiert. Damit kannst du denselben Code nicht mehrfach kopieren, sondern ihn automatisch so oft wie nötig ausführen.
In C# und Unity gibt es verschiedene Arten von Schleifen:
for
, while
und foreach
. Jede
funktioniert etwas anders, aber die Grundidee ist gleich:
wiederholen, solange eine Bedingung erfüllt ist.
Eine for
-Schleife ist eine Möglichkeit, denselben
Codeblock mehrfach auszuführen. Du sagst dem Computer: Beginne mit
einem bestimmten Wert, prüfe eine Bedingung und ändere bei jedem
Durchlauf den Zähler. Zum Beispiel: „wiederhole 10 Mal“ oder „gehe von
0 bis 5“.
Diese Schleife ist besonders praktisch, wenn man im Voraus weiß, wie oft etwas geschehen soll — zum Beispiel 5 Gegner erzeugen, Punkte zählen oder 10 Plattformen zeichnen.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Start wird einmal beim Starten des Objekts aufgerufen
void Start()
{
// 5 Mal wiederholen
for (int i = 0; i < 5; i++)
{
Debug.Log("Iteration Nr. " + i);
}
}
// Update wird einmal pro Frame aufgerufen
void Update()
{
}
}
In diesem Beispiel führen wir eine for
-Schleife aus, die
sich 5 Mal wiederholt. Die Variable i
beginnt bei 0 und
wird bei jedem Durchlauf um 1 erhöht. Solange i
kleiner
als 5 ist, läuft die Schleife weiter und gibt die Iterationsnummer in
der Konsole aus.
So funktionieren die meisten einfachen Wiederholungen in Unity: Man kann Levels durchgehen, Objekte erzeugen, Arrays überprüfen und vieles mehr.
Eine while
-Schleife läuft
solange die Bedingung wahr ist. Es ist wie eine
Prüfung vor jedem Schritt: Wenn die Bedingung true
ist,
machen wir weiter. Wenn sie false
ist, verlassen wir die
Schleife.
Diese Schleife ist praktisch, wenn man nicht im Voraus weiß, wie oft etwas wiederholt werden soll — zum Beispiel, solange gewartet werden muss, bis der Spieler ein Ziel erreicht hat oder bis eine Beenden-Taste gedrückt wird.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
int energy = 3;
// Start wird einmal beim Starten des Objekts aufgerufen
void Start()
{
// Solange Energie größer als null ist — wiederholen
while (energy > 0)
{
Debug.Log("Verbleibende Energie: " + energy);
energy--;
}
}
// Update wird einmal pro Frame aufgerufen
void Update()
{
}
}
In diesem Beispiel wiederholt sich die while
-Schleife,
solange energy
größer als null ist. Bei jedem Schritt
geben wir den aktuellen Wert in der Konsole aus und verringern
energy
um eins.
Sobald energy
null erreicht, ist die Bedingung nicht mehr
erfüllt und die Schleife endet. Dieses Muster wird oft verwendet, wenn
die Anzahl der Wiederholungen vom Zustand abhängt — z. B. solange
Munition vorhanden ist oder ein Gegner noch lebt.
while
-Schleifen
in Unity!
Wenn die Bedingung nie false
wird, entsteht eine
Endlosschleife, und Unity kann sich aufhängen oder abstürzen. Das
ist besonders gefährlich, wenn die Schleife in
Update()
läuft.
Stelle immer sicher, dass sich die Variable in der Bedingung verändert. Oder setze eine Begrenzung — zum Beispiel maximal 100 Wiederholungen, wenn du unsicher bist.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
int energy = 10;
// Start wird einmal beim Starten des Objekts aufgerufen
void Start()
{
while (true)
{
if (energy <= 0)
{
Debug.Log("Energie ist aufgebraucht – Schleife wird beendet");
break; // Schleife verlassen
}
Debug.Log("Verbleibende Energie: " + energy);
energy--;
}
}
// Update wird einmal pro Frame aufgerufen
void Update()
{
}
}
Hier sieht die Schleife while (true)
wie eine
Endlosschleife aus, aber es gibt eine Bedingung: Wenn
energy
kleiner oder gleich null ist, beendet
break
die Schleife.
Das ist nützlich, wenn eine Schleife „so lange wie nötig“ laufen soll — auch wenn man nicht weiß, wann genau das Ende kommt. Wichtig ist nur: Vergiss die Abbruchbedingung nicht!
Eine foreach
-Schleife erlaubt es, durch alle Elemente
einer Sammlung zu gehen — ein Array, eine Liste oder eine andere
Struktur. Sie nimmt automatisch jedes Element nacheinander, ohne dass
man selbst zählen muss wie bei for
.
Das ist besonders praktisch, wenn der Index nicht wichtig ist und man einfach alles durchgehen will — z. B. alle Gegner, alle Buttons oder alle Items im Inventar.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
string[] names = { "Anja", "Bob", "Sonja", "Herr Igel" };
// Start wird einmal beim Starten des Objekts aufgerufen
void Start()
{
foreach (string name in names)
{
Debug.Log("Name: " + name);
}
}
// Update wird einmal pro Frame aufgerufen
void Update()
{
}
}
In diesem Beispiel verwenden wir foreach
, um durch das
Array names
zu gehen. Bei jedem Durchlauf erhält die
Variable name
automatisch den nächsten Wert — zuerst
"Anja", dann "Bob", dann "Sonja" und natürlich
Herr Igel.
Diese Methode ist ideal, wenn du alle Elemente durchgehen willst, ohne
Zähler zu benutzen. foreach
macht das einfach und
leserlich.