Manchmal reicht eine einzelne Variable nicht aus. Was ist, wenn wir gleich 10 Gegner haben? Oder eine Liste mit Früchten? Dann kommen Arrays und Listen ins Spiel – sie ermöglichen es dir, viele Werte gleichzeitig zu speichern und per Index darauf zuzugreifen.
Arrays und Listen sind nützlich, wenn du:
In dieser Lektion schauen wir uns an, wie sich Arrays von Listen unterscheiden und wie man sie in Unity erstellt, befüllt und verwendet.
Ein Array ist eine Variable, die mehrere Werte desselben Typs speichern kann. Anstatt zehn einzelne Variablen zu erstellen, fassen wir sie in einem Array zusammen und greifen über den Index darauf zu.
Arrays sind besonders nützlich, wenn man im Voraus weiß, wie viele Plätze gebraucht werden – zum Beispiel 5 Leben für den Spieler oder 3 Menüschaltflächen. Jedes Element im Array hat einen Index, beginnend bei null.
Nach der Erstellung bleibt die Länge des Arrays gleich: Man kann keine Elemente hinzufügen oder entfernen. Wenn du etwas Flexibleres brauchst – siehe weiter unten den Abschnitt über Listen.
Um ein Array zu erstellen, gibst du den Datentyp und die Anzahl der Elemente an. Du kannst es zuerst deklarieren und später befüllen oder direkt alle Werte in geschweiften Klammern angeben.
Jedes Element im Array hat eine Nummer – den Index,
beginnend bei 0
. Über diesen Index können wir Werte lesen
und ändern. Zum Beispiel ist array[1]
das zweite Element.
Unten siehst du zwei Beispiele: eines mit Zahlen, eines mit Zeichenketten. Sie zeigen, wie man ein Array erstellt, befüllt und die Werte im Code verwendet.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Start wird einmal beim Start des Objekts aufgerufen
void Start()
{
// Ein Array mit 3 Zahlen erstellen
int[] numbers = new int[3];
// Das Array mit Werten befüllen
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
// Einen Wert ausgeben
Debug.Log("Zweite Zahl: " + numbers[1]);
}
// Update wird einmal pro Frame aufgerufen
void Update()
{
}
}
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Start wird einmal beim Start des Objekts aufgerufen
void Start()
{
// Array mit Namen
string[] names = { "Anya", "Bob", "Sonya" };
// Den ersten Namen ausgeben
Debug.Log("Hallo, " + names[0]);
}
// Update wird einmal pro Frame aufgerufen
void Update()
{
}
}
Eine Liste ist wie ein Array, aber flexibler. Du
kannst jederzeit Elemente hinzufügen oder entfernen, ohne die Anzahl
im Voraus festzulegen. Für Listen verwendet man den Typ
List<T>
, wobei T
der Datentyp ist
(z. B. int
, string
,
GameObject
).
Listen werden häufig verwendet, wenn:
Um eine Liste zu erstellen, verwendet man
List<T>
und bindet den Namensraum
System.Collections.Generic
ein. Danach können Elemente
ganz einfach zur Laufzeit hinzugefügt werden.
Zum Hinzufügen von Elementen nutzt man die Methode Add()
.
Sie fügt einen Wert am Ende der Liste ein.
Um ein Element zu entfernen, kann man Remove()
verwenden
– es sucht und löscht das erste Vorkommen des angegebenen Wertes. Es
gibt auch andere Methoden wie RemoveAt(index)
, um gezielt
nach Index zu löschen.
Statt Length
wie bei Arrays nutzt man bei Listen
Count
, um die aktuelle Anzahl der Elemente anzuzeigen.
Unten siehst du ein Beispiel, wie das Ganze in einem Unity-Skript aussieht.
using UnityEngine;
using System.Collections.Generic;
public class CSharpScript : MonoBehaviour
{
// Start wird einmal beim Start des Objekts aufgerufen
void Start()
{
// Eine Liste mit Namen und Anfangswerten erstellen
List<string> names = new List<string>() { "Anya", "Bob", "Sonya" };
// Zwei weitere Namen hinzufügen
names.Add("Tina");
names.Add("Leo");
// Den ersten Namen (Anya) entfernen
names.RemoveAt(0);
// Die Anzahl der Elemente ausgeben
Debug.Log("Anzahl der Namen in der Liste: " + names.Count);
}
// Update wird einmal pro Frame aufgerufen
void Update()
{
}
}
Beide – Arrays und Listen – dienen dazu, mehrere Werte zu speichern, aber sie haben unterschiedliche Eigenschaften.
Add()
,
Remove()
, Clear()
und
Count
brauchst.
Wenn du unsicher bist – fang mit List<T>
an. Sie
ist in den meisten Fällen einfacher und flexibler.