====== Variablen ====== ===== 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. ===== Zahlen ===== var a = 5 print (a+6) # Ausgabe = 11 ==== int ==== Ab Godot 3.1 kann einer Variablen auch ein Daten-Typ zugeordnet werden\\ Ganzzahl also ohne Nachkommastellen var a : int = 5 ==== float ==== Ab Godot 3.1 kann einer Variablen auch ein Daten-Typ zugeordnet werden.\\ Fließkommazahl var a : float = 5 ===== Boolean ===== Ab Godot 3.1 kann einer Variablen auch ein Daten-Typ zugeordnet werden.\\ Wahrheitswert True und False (engl. für wahr und falsch) var a : bool = true ===== String ===== var name = "Hugo" print (name) # Ausgabe = Hugo Ab Godot 3.1 kann einer Variablen auch ein Daten-Typ zugeordnet werden.\\ var geburtstag : String = "01.01.2019" ==== Methoden ==== | bool | begins_with ( String text ) | | | PoolStringArray | bigrams ( ) | | | String | c_escape ( ) | | | String | c_unescape ( ) | | | String | capitalize ( ) | | | int | casecmp_to ( String to ) | | | String | dedent ( ) | | | bool | empty ( ) | | | bool | ends_with ( String text ) | | | void | erase ( int position, int chars ) | | | int | find ( String what, int from=0 ) | Sucht nach einer Zeichenkette und liefert die Position. Optional kann der Beginn der Suche angegebn werden | | int | find_last ( String what ) | Sucht nach einer Zeichenkette und liefert die Position des letzten Fundes | | int | findn ( String what, int from=0 ) | Findet das erste Vorkommen einer Teilzeichenfolge und ignoriert dabei die Groß- und Kleinschreibung. Gibt die Startposition des Teilstrings zurück oder -1, falls nicht gefunden. Optional kann der anfängliche Suchindex übergeben werden. | | String | format ( Variant values, String placeholder={_} ) | | | String | get_base_dir ( ) | | | String | get_basename ( ) | | | String | get_extension ( ) | | | String | get_file ( ) | | | int | hash ( ) | | | int | hex_to_int ( ) | | | String | insert ( int position, String what ) | | | bool | is_abs_path ( ) | | | bool | is_rel_path ( ) | | | bool | is_subsequence_of ( String text ) | | | bool | is_subsequence_ofi ( String text ) | | | bool | is_valid_float ( ) | | | bool | is_valid_hex_number ( bool with_prefix=False ) | | | bool | is_valid_html_color ( ) | | | bool | is_valid_identifier ( ) | | | bool | is_valid_integer ( ) | | | bool | is_valid_ip_address ( ) | | | String | json_escape ( ) | | | String | left ( int position ) | | | int | length ( ) | Anzahl der Zeichen | | String | lstrip ( String chars ) | | | bool | match ( String expr ) | | | bool | matchn ( String expr ) | | | PoolByteArray | md5_buffer ( ) | | | String | md5_text ( ) | | | int | nocasecmp_to ( String to ) | | | int | ord_at ( int at ) | | | String | pad_decimals ( int digits ) | | | String | pad_zeros ( int digits ) | | | String | percent_decode ( ) | | | String | percent_encode ( ) | | | String | plus_file ( String file ) | | | String | replace ( String what, String forwhat ) | | | String | replacen ( String what, String forwhat ) | | | int | rfind ( String what, int from=-1 ) | | | int | rfindn ( String what, int from=-1 ) | | | String | right ( int position ) | | | PoolStringArray | rsplit ( String divisor, bool allow_empty=True, int maxsplit=0 ) | | | String | rstrip ( String chars ) | | | PoolByteArray | sha256_buffer ( ) | | | String | sha256_text ( ) | | | float | similarity ( String text ) | | | PoolStringArray | split ( String divisor, bool allow_empty=True, int maxsplit=0 ) | zerlegt eine Zeichenkette bei "divisor" und speichert alle Teile in ein Array | | PoolRealArray | split_floats ( String divisor, bool allow_empty=True ) | | | String | strip_edges ( bool left=True, bool right=True ) | entfernt Frei- und Steuerzeichen zu Beginn und Ende des Strings | | String | substr ( int from, int len ) | liefert einen Teilstring beginnend bei "from" mit der Länge von "len" | | PoolByteArray | to_ascii ( ) | | | float | to_float ( ) | | | int | to_int ( ) | | | String | to_lower ( ) | | | String | to_upper ( ) | | | PoolByteArray | to_utf8 ( ) | | | String | trim_prefix ( String prefix ) | | | String | trim_suffix ( String suffix ) | | | String | xml_escape ( ) | | | String | xml_unescape ( ) | | ===== Konstanten ===== Einen Speicherplatz mit festem Inhalt erreichen wir mit Konstanten. const MeinGeburtsjahr = 66 const MeinName = "Hugo" ===== Array ===== var arr = [] arr = [1, 2, 3] print(arr[1]) # Ausgabe = 2 print(arr.size() - 1]) # Ausgabe Anz. Arrayeinträge arr[1] = 7 # arr = [1,7,3] arr.append(4) # arr = [1,7,3,4] var v2 = Vector2(1, 2) var v3 = Vector3(1, 2, 3) Ab Godot 3.1 kann einer Variablen auch ein Daten-Typ zugeordnet werden.\\ var b : Array = [3, 55, 78] | void | append ( var value ) | | | var | back ( ) | | | int | bsearch ( var value, bool before=True ) | | | int | bsearch_custom ( var value, Object obj, String func, bool before=True ) | | | void | clear ( ) | | | int | count ( var value ) | | | Array | duplicate ( ) | | | bool | empty ( ) | | | void | erase ( var value ) | | | int | find ( var what, int from=0 ) | | | int | find_last ( var value ) | | | var | front ( ) | | | bool | has ( var value ) | | | int | hash ( ) | | | void | insert ( int position, var value ) | | | void | invert ( ) | | | var | pop_back ( ) | | | var | pop_front ( ) | | | void | push_back ( var value ) | | | void | push_front ( var value ) | | | void | remove ( int position ) | | | void | resize ( int size ) | | | int | rfind ( var what, int from=-1 ) | | | int | size ( ) | | | void | sort ( ) | | | void | sort_custom ( Object obj, String func ) | | ==== Initialisierung von Array-Feldern ==== Während ein eindimensionales Array, sich mit einer Skriptzeile erstellen lässt: var feld = [] Müssen wir bei einem mehrdimensionalen Array-Feld, dieses mit Hilfe von For-Schleifen einrichten: for y in range(10): feld.append([]) # neue Zeile for x in range(10): feld[y].append(null) # neue Spalte Wodurch wir ein Feld[0-9][0-9] (Feld[y][x]) erhalten. ===== enum ===== Bei dieser Form von Konstanten handelt es sich um eine Aufzählung. Es gibt zwei Formen: enum{links,rechts,unten,oben} print(unten) oder enum richtung{links,rechts,unten,oben} print(richtung.unten) Über die Print-Anweisung erhalten wir die jeweilige IndexNummer. In beiden Fällen erhalten wir die Indexnummer 2 da beginnend der erste Eintrag die Nummer 0 erhält. Soll der Index bei einer anderen Zahl beginnen, können wir dies in der Zuweisung angeben: enum{links=10,rechts,unten,oben} print(unten) würde so den Index 12 liefern. ===== Dictionary ===== var dict = {"name": "Hugo", "alter":23} print(dict.get("name"), dict.get("alter")) # => Hugo23 # erweitern eines Dictionary dict.telefon = 4711 # ODER var a = "Geschlecht" var b = "männlich" dict[a] = b Ab Godot 3.1 kann einer Variablen auch ein Daten-Typ zugeordnet werden.\\ var myDict : Dictionary = {"name": "Max", "nachname": "Muster"} ==== Methoden ==== | void | clear ( ) | löscht gesamten Inhalt des Dictionary | | Dictionary | duplicate ( bool deep=False ) | | | bool | empty ( ) | bei leerem Dictionary gibt diese Funktion true zurück | | bool | erase ( Variant key ) | löscht Schlüssel und Wert aus Dictionary | | Variant | get ( Variant key, Variant default=Null ) | | | bool | has ( Variant key ) | liefert true wenn Schlüssel im Dictionary enthalten | | bool | has_all ( Array keys ) | liefert true wenn alle Schlüssel(des Arry) im Dictionary enthalten | | int | hash ( ) | wird auch nur ein Eintrag geändert, ändert sich dieser Wert | | Array | keys ( ) | array mit allen Schlüsseln des Dictionary | | int | size ( ) | Anzahl der Paare | | Array | values ( ) | array mit allen Werten des Dictionary | ====== Exportvariablen ====== export var Nachname = "Schröder" Wenn jetzt der Node im Szenenbaum selektiert wird, ist die Variable und dessen Wert im Inspektor unter Script Variables aufgeführt. Der Wert kann im Inspektor geändert werden und hat dann auch Vorrang in Bezug auf die Skriptdefinition. ====== setget ====== Möchte man den externen Zugriff auf eine Variable überwachen, also einen schreib(set)- und/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 zuvor ausgeführt 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) ====== Typ ermitteln ====== | int | typeof( Variant what ) | if typeof(Variable) == 4: # Variable vom Typ String pass | TYPE_NIL | 0 | TYPE nil (only applied for null). | | TYPE_BOOL | 1 | TYPE bool. | | TYPE_INT | 2 | TYPE integer. | | TYPE_REAL | 3 | TYPE float/real. | | TYPE_STRING | 4 | TYPE String. | | TYPE_VECTOR2 | 5 | TYPE Vector2. | | TYPE_RECT2 | 6 | TYPE Rect2. | | TYPE_VECTOR3 | 7 | TYPE Vector3. | | TYPE_MATRIX32 | 8 | TYPE Matrix32. | | TYPE_PLANE | 9 | TYPE Plane. | | TYPE_QUAT | 10 | TYPE Quat. | | TYPE_AABB | 11 | TYPE AABB. | | TYPE_MATRIX3 | 12 | TYPE Matrix3. | | TYPE_TRANSFORM | 13 | TYPE Transform. | | TYPE_COLOR | 14 | TYPE Color. | | TYPE_IMAGE | 15 | TYPE Image. | | TYPE_NODE_PATH | 16 | TYPE NodePath. | | TYPE_RID | 17 | TYPE RID. | | TYPE_OBJECT | 18 | TYPE Object. | | TYPE_INPUT_EVENT | 19 | TYPE InputEvent. | | TYPE_DICTIONARY | 20 | TYPE Dictionary. | | TYPE_ARRAY | 21 | TYPE Array. | | TYPE_RAW_ARRAY | 22 | | | TYPE_INT_ARRAY | 23 | | | TYPE_REAL_ARRAY | 24 | | | TYPE_STRING_ARRAY | 25 | | | TYPE_VECTOR2_ARRAY | 26 | | | TYPE_VECTOR3_ARRAY | 27 | | | TYPE_COLOR_ARRAY | 28 | | | TYPE_MAX | 29 | | --- //windy -- 28.07.2019//