🏠 Startseite

Schleifen in Unity

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.

🔁 Die for-Schleife

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.

🔄 Die while-Schleife

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.

⚠️ Hinweis: Vorsicht mit 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!

🔂 Die foreach-Schleife

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.