====== Funktionen ======
Funktionen bündeln Skriptzeilen zu einem eigenständigen Block.
func my_funktion(a,b):
print(a)
print(b)
return a+b
===== Wahl des Namens =====
Variablen- und Funktionsnamen können unter Berücksichtigung der folgenden Regeln frei gewählt werden.
* Der Name darf nicht mit bereits definierten Funktionen oder Namen identisch sein.
* Es wird zwischen Groß- und Kleinschrift unterschieden.
* Einzig zugelassenes Sonderzeichen ist der Unterstrich _
* Der Name muss mit einem Buchstaben oder Unterstrich beginnen.
* Danach kann der Name auch Zahlen enthalten.
* Umlaute, ß und Freizeichen sind nicht erlaubt.
Beginnt der Name mit einem Unterstrich sind diese Variablen oder Funktionen Privat und sind somit von Außerhalb
nicht zugänglich!
===== func =====
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.
==== return ====
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 =====
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(): | [[godot:syntax: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 [[godot:syntax:ereignisse|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): | |
==== Ausführung steuern ====
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() |
===== Static Funktionen =====
Hierdurch kann nicht auf Instanzeigene Variablen und auf self zugegriffen werden.
static func sum2(a, b):
return a + b
===== setget =====
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)
===== pass =====
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//