Funktionen bündeln Skriptzeilen zu einem eigenständigen Block.
func my_funktion(a,b): print(a) print(b) return a+b
Variablen- und Funktionsnamen können unter Berücksichtigung der folgenden Regeln frei gewählt werden.
Beginnt der Name mit einem Unterstrich sind diese Variablen oder Funktionen Privat und sind somit von Außerhalb nicht zugänglich!
Nach dem Befehl „func“ wird der Name der Funktion angegeben. Innerhalb der darauf folgenden Klammern, können Variablen der Funktion übergeben werden. Die Befehlszeile endet mit einem Doppelpunkt.
Der dazu gehörige Skriptteil wird eingerückt.
Bei Bedarf kann mittels des Befehls „return“ die Abarbeitung der Funktion abgebrochen werden und ein Wert kann an die aufrufende Stelle zurückgegeben werden. Wird die Funktion nicht abgebrochen oder übergeben wir return keinen Wert, liefert die Funktion standartmäßig „Null“ zurück.
func _ready(): print(multiplikation(5,3)) func multiplikation(a,b): return a*b
Ab Godot 3.1 können bei Variablen von Funktionen, die jeweiligen Typen angegeben werden.
func multiplikation(a:float, b:float) -> float: return a*b
int | Ganzzahl |
float | Fließkommazahl |
bool | Wahrheitswert |
String | Text |
void | leer |
Vordefinierte Funktionen liefern Parameter mit, welche innerhalb der Funktion meist gebraucht werden. Benutzen wir diese jedoch nicht, kommt es zu einem Warnhinweis! Setzen wir vor den Variablennamen ein Unterstrich, umgehen wir diese Meldung.
func _process(_delta): pass
_draw(): | Draw |
_unhandled_key_input(event): | |
_unhandled_input(event): | |
_set(property, value): | |
_ready(): | wird einmal aufgerufen wenn der Node und alle seine Kinder in der Szene aktiv sind. |
_process(delta): | wird bei jedem Frame(neu gezeichnetes Bild) aufgerufen. |
_physics_process(delta): | Diese Funktion wird vor jedem physikalischen Schritt durchgeführt. Die Aufrufe pro Sekunde werden in den Projekteinstellungen vorgegeben. Standardmäßig 60mal pro Sekunde. „delta“ enthält die tatsächliche Zeit, welche zwischen dem letzten Aufruf vergangen ist. Multiplizieren wir eine Bewegung mit diesem Wert, wird diese auf unterschiedlichen Rechnern, vergleichbar schnell. |
_notification(what): | |
_input(event): | Diese Funktion wird durch ein Event(Ereignis) aufgerufen. Das jeweilige Event wird der Funktion übergeben und kann so in der Funktion ausgewertet werden. |
_init(): | Konstruktor der Instanz |
_get_property_list(): | |
_get(property): | |
_exit_tree(): | Aufruf erfolgt wenn das Node aus dem Baum genommen wird. Spätestens wenn die Anwendung beendet wird |
_enter_tree(): | Aufruf erfolgt wenn das Node in dem Baum eingebunden wird. |
Einige Nodes bringen eigene Funktionen mit. Bei einem RigidBody2D soll Beispilesweise in dieser Funktion Einfluss auf Position oder Drehung genommen werden.
_integrate_forces(state): |
Die Ausführung von Vordefinierten Funktionen können wir mit folgenden Befehlen steuern:
_process(delta): | set_process(bool) |
_input(event): | set_process_input(bool) |
_physics_process(delta): | set_physics_process(bool) |
_unhandled_input(event): | set_process_unhandled_input(bool) |
_unhandled_key_input(event): | set_process_unhandled_key_input(bool) |
true aktiviert und false deaktiviert die Ausführung
Die Funktion _draw() wird einmalig beim Start abgearbeitet. Eine erneute Abarbeitung der Funktion erreichen wir mit update()
_draw(): | update() |
Hierdurch kann nicht auf Instanzeigene Variablen und auf self zugegriffen werden.
static func sum2(a, b): return a + b
möchte man den externen Zugriff auf eine Variable überwachen, also einen schreib(set)- oder lese(get)-zugriff, kann man bei dessen Variablenzuweisung eine jeweilige Funktion zuordnen. Sinnvoll ist dies beispielsweise, um die Eingabe zu überprüfen.
var dummi = 10 setget set_funktion, get_funktion
Wird nun von außerhalb der Klasse, auf diese Variable schreibend zugegriffen, wird die Funktion set_funktion zugegriffen und bein lesenden zugriff die Funktion get_funktion. Bei letzterem erfolgt die Übergabe durch eben diese Funktion mittels des return Befehls
func get_funktion(): return dummi
Es ist nicht zwingend notwendig beide Funktionen zu definieren.
var dummi = 10 setget set_funktion # nur lesen var dummi = 10 setget ,get_funktion # nur schreiben (achte auf das Komma)
Der Anweisungsblock kann beliebig viele Zeilen enthalten, welche alle gleich eingerückt sein müssen. Jedoch muss mindestens eine Zeile vorhanden sein! Gerade in der Entwicklungsphase möchte man jedoch diesen Block erst später ausarbeiten. Mit dem Befehl pass übergeben wir hier einen leeren Anweisungsblock welcher eine entsprechende Fehlermeldung verhindert.
func my_funktion(x): pass
— windy – 18.09.2019