Funktionen (oder Methoden) in Unity sind eine Möglichkeit, den Code in separate Blöcke zu organisieren, um ihn verständlicher, übersichtlicher und zuverlässiger zu machen. Wenn du möchtest, dass derselbe Satz von Anweisungen an mehreren Stellen ausgeführt wird, kannst du ihn in eine eigene Funktion auslagern und diese bei Bedarf aufrufen.
Anstatt dieselben Zeilen immer wieder zu schreiben, erstellst du die Funktion einmal und rufst sie dann über ihren Namen auf. Das spart Zeit, macht den Code sauberer und erleichtert das Finden von Fehlern.
Funktionen können Aktionen ausführen (z. B. springen, den Spieler heilen, einen Sound abspielen) oder Werte zurückgeben (z. B. Punkte berechnen oder prüfen, ob der Gegner noch lebt). Außerdem können ihnen Parameter übergeben werden – zum Beispiel „füge 5 zur Gesundheit hinzu“ oder „erstelle 3 Gegner“.
In Unity kannst du sowohl eingebaute Funktionen (z. B.
Start()
und Update()
) verwenden als auch deine
eigenen schreiben. Genau das lernen wir jetzt – einfach und Schritt für
Schritt.
Eine Funktion in Unity ist ein Codeblock, der eine bestimmte Aktion
ausführt. Um eine solche Funktion zu erstellen, musst du sie
innerhalb einer Klasse, aber
außerhalb anderer Funktionen schreiben. Normalerweise
platzieren wir sie in der Nähe von Start()
oder
Update()
im Skript.
Jede Funktion besteht aus vier Teilen: dem
Rückgabewert (z. B. void
), dem
Namen, den runden Klammern für
Parameter (auch wenn es keine gibt) und den
geschweiften Klammern, in denen der eigentliche Code
steht.
Zum Beispiel kannst du eine Funktion Jump()
erstellen,
die den Charakter springen lässt, oder
HealPlayer(int amount)
, die Gesundheit hinzufügt. Es
hängt von der Aufgabe ab – das Wichtigste ist, dass du steuerst, was
in der Funktion passiert und wann sie aufgerufen wird.
Wenn eine Funktion nur eine Aktion ausführt und
keinen Wert zurückgibt, wird sie mit dem
Schlüsselwort void
markiert. Solche Funktionen sind
praktisch, wenn einfach etwas getan werden soll – z. B. eine Nachricht
anzeigen oder einen Sound abspielen.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Start wird einmal beim Start des Objekts aufgerufen
void Start()
{
SayHello();
}
// Update wird jeden Frame aufgerufen
void Update()
{
}
void SayHello()
{
Debug.Log("Hallo, Unity!");
}
}
Hier haben wir eine Funktion SayHello()
erstellt, die
Text in die Konsole ausgibt. Wir rufen sie aus
Start()
auf, damit sie beim Start ausgeführt wird. Solche
Funktionen sind die Grundlage einer sauberen Codeorganisation: Sie
halten den Code ordentlich und lesbar.
Funktionen können Parameter annehmen – zusätzliche Daten, die beim Aufruf übergeben werden. Das macht die Funktion flexibler: Sie kann sich je nach Eingabewerten unterschiedlich verhalten.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Start wird einmal beim Start des Objekts aufgerufen
void Start()
{
HealPlayer(10);
}
// Update wird jeden Frame aufgerufen
void Update()
{
}
void HealPlayer(int amount)
{
Debug.Log("Heile den Spieler um " + amount + " Lebenspunkte");
}
}
Wir haben eine Funktion HealPlayer
erstellt, die einen
Parameter amount
annimmt. Beim Aufruf von
HealPlayer(10)
erscheint in der Konsole eine Nachricht
über eine Heilung um 10 Punkte. Dieselbe Funktion kann mit anderen
Zahlen aufgerufen werden – und das Verhalten ändert sich entsprechend.
Um eine Funktion aufzurufen, schreibe einfach ihren
Namen und runde Klammern. Falls sie Parameter hat, übergib die
benötigten Werte darin. Du kannst sie aus Start()
,
Update()
oder einer anderen Funktion aufrufen.
In den vorherigen Beispielen haben wir bereits Funktionen aufgerufen –
SayHello()
und HealPlayer(10)
. Das ist ein
Funktionsaufruf. Ohne diesen wird die Funktion nicht ausgeführt – sie
existiert dann nur im Code.
Manchmal muss eine Funktion
etwas berechnen und das Ergebnis zurückgeben. Dazu
gibt man anstelle von void
den Rückgabetyp an – zum
Beispiel int
oder bool
. Solche Funktionen
können Teil eines anderen Ausdrucks sein.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Start wird einmal beim Start des Objekts aufgerufen
void Start()
{
int score = GetScore();
Debug.Log("Aktueller Punktestand: " + score);
}
// Update wird jeden Frame aufgerufen
void Update()
{
}
int GetScore()
{
return 42;
}
}
Hier gibt die Funktion GetScore()
eine Zahl zurück. Wir
speichern sie in einer Variablen und geben sie in der Konsole aus.
Solche Funktionen sind besonders nützlich, wenn du ein Ergebnis
brauchst – zum Beispiel die Position eines Objekts, die Gesundheit des
Spielers oder ein true/false
-Flag.