gdscript:cheatsheet

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
gdscript:cheatsheet [2025/10/14 20:15] silversurfergdscript:cheatsheet [2025/10/14 20:51] (aktuell) – [Fehlerbehandlung & Debug] silversurfer
Zeile 10: Zeile 10:
  
 ===== Variablen & Typen ===== ===== Variablen & Typen =====
-==== Dynamisch / untypisiert====+==== Dynamisch / untypisiert ====
  
 <codedoc code:python>var x = 5 </codedoc> <codedoc code:python>var x = 5 </codedoc>
-==== Getypt (empfohlen)====+==== Getypt (empfohlen) ====
  
 <codedoc code:python>var speed: int = 200 <codedoc code:python>var speed: int = 200
Zeile 20: Zeile 20:
  
 <codedoc code:python>@onready var sprite = $Sprite </codedoc> <codedoc code:python>@onready var sprite = $Sprite </codedoc>
-==== export (sichtbar/konfigurierbar im Editor)====+==== export (sichtbar/konfigurierbar im Editor) ====
  
 <codedoc code:python>@export var speed := 200 <codedoc code:python>@export var speed := 200
Zeile 26: Zeile 26:
  
 ===== Funktionen ===== ===== Funktionen =====
-==== Definition====+==== Definition ====
 <codedoc code:python>func my_func(param: int) -> String: <codedoc code:python>func my_func(param: int) -> String:
    return str(param)</codedoc>    return str(param)</codedoc>
-Lebenszyklus-Hooks: +==== Lebenszyklus-Hooks ==== 
-  - func _ready():                 # nach dem Hinzufügen in die Szene +<codedoc code:python>func _ready():                 # nach dem Hinzufügen in die Szene 
-  func _process(delta):          # every frame (nicht-physikalisch) +func _process(delta):          # every frame (nicht-physikalisch) 
-  func _physics_process(delta):  # physics frame+func _physics_process(delta):  # physics frame</codedoc>
  
-Sichtbarkeits-/Annotations +==== Sichtbarkeits-/Annotations ==== 
-@tool         # Skript läuft auch im Editor (Godot 3/4) +<codedoc code:python>@tool         # Skript läuft auch im Editor (Godot 3/4) export, onready, class_name siehe oben</codedoc>
-export, onready, class_name siehe oben+
  
-Knoten & Szenen +===== Knoten & Szenen =====
-- Zugriff: +
-  - var player get_node("Player"+
-  - var p $Player/SubNode +
-- Instanziieren: +
-  - var Packed preload("res://Enemy.tscn"+
-  - var enemy Packed.instantiate()   # Godot 4 +
-  - var enemy Packed.instance()      # Godot 3 (alte Methode) +
-  - add_child(enemy) +
-- Entfernen: +
-  - queue_free()+
  
-Ressourcen laden +==== Zugriff ==== 
-- preload (compile-time, schneller): +<codedoc code:python>var player = get_node("Player"
-  var TEX = preload("res://sprite.png") +var p = $Player/SubNode</codedoc> 
-- load (runtime): +==== Instanziieren ==== 
-  var TEX load("res://sprite.png")+<codedoc code:python>var Packed = preload("res://Enemy.tscn") 
 +var enemy = Packed.instantiate()   # Godot 4 
 +var enemy Packed.instance()      # Godot 3 (alte Methode) 
 +add_child(enemy)</codedoc> 
 +==== Entfernen ==== 
 +<codedoc code:python>queue_free()</codedoc>
  
-Signale +===== Ressourcen laden ===== 
-- Definieren / Emittieren: +==== preload (compile-timeschneller==== 
-  - signal hit(damage) +<codedoc code:python>var TEX = preload("res://sprite.png")</codedoc> 
-  emit_signal("hit"10+==== load (runtime==== 
-- Verbinden: +<codedoc code:python>var TEX = load("res://sprite.png")</codedoc>
-  - connect("hit", self, "_on_hit") +
-  - $Button.connect("pressed", self, "_on_pressed"+
-- Godot 4Typed signal syntax möglich: +
-  - signal hit(damageint)+
  
-Eingabe (Input) +===== Signale ===== 
-- _input(event+==== Definieren / Emittieren ==== 
-  - func _input(event)+<codedoc code:python>signal hit(damage
-      if event is InputEventKey and event.pressed: +emit_signal("hit", 10)</codedoc> 
-          if event.scancode == KEY_SPACE: +==== Verbinden ==== 
-              jump() +<codedoc code:python>connect("hit", self, "_on_hit"
-- Input-Mapping (Project Settings -> InputMap): +$Button.connect("pressed", self, "_on_pressed")</codedoc> 
-  - if Input.is_action_pressed("ui_right"): ...+==== Godot 4Typed signal syntax möglich ==== 
 +<codedoc code:python>signal hit(damage: int)</codedoc>
  
-Await / Coroutines / Timer +===== Eingabe (Input=====
-- Godot 3 yield: +
-  - yield(get_tree().create_timer(1.0), "timeout"+
-- Godot 4 await: +
-  - await get_tree().create_timer(1.0).timeout +
-- Timer-Node: +
-  - $Timer.start(2.0)+
  
-Collections +==== _input(event==== 
-- Array: +<codedoc code:python>func _input(event)
-  - var a [1, 2, 3] +   if event is InputEventKey and event.pressed
-  - a.append(4+      if event.scancode == KEY_SPACE
-  - for i in a... +         jump()</codedoc> 
-- Dictionary+==== Input-Mapping (Project Settings -> InputMap) ==== 
-  - var d {"hp"10, "name": "Player"} +<codedoc code:python>if Input.is_action_pressed("ui_right"): 
-  - if d.has("hp"): ...+ ...</codedoc>
  
-Kontrollstrukturen +===== Await Coroutines Timer =====
-- if/elif/else: +
-  - if x > 0: +
-      pass +
-- match (Godot 4 / GDScript 2.0): +
-  - match value: +
-      1: +
-        ... +
-      _: +
-        ... +
-- for/while: +
-  - for i in range(5): ... +
-  - while cond: ...+
  
-Fehlerbehandlung & Debug +==== Godot 3 yield ==== 
-- print(), push_error(), push_warning() +<codedoc code:python>yield(get_tree().create_timer(1.0), "timeout")</codedoc> 
-assert(condition, "message")+==== Godot 4 await ==== 
 +<codedoc code:python>await get_tree().create_timer(1.0).timeout</codedoc> 
 +==== Timer-Node ==== 
 +<codedoc code:python>$Timer.start(2.0)</codedoc>
  
-Best Practices (Kurz) +===== Collections ===== 
-- Typisieren wo möglich (besseres Autocomplete & Fehlercheck+==== Array ==== 
-- Export für Editor-Bearbeitbarkeit +<codedoc code:python>var a = [1, 2, 3] 
-- onready für Knoten-Referenzen +a.append(4
-- Verwende preload für häufig genutzte Ressourcen +for i in a:  
-- Trenne Gameplay-Logik in übersichtliche Methoden +   ...</codedoc> 
-- Nutze Signals statt eng gekoppelter Node-Referenzen (lockere Kopplung)+==== Dictionary: ==== 
 +<codedoc code:python>var d = {"hp": 10, "name": "Player"} 
 +if d.has("hp"):  
 +   ... </codedoc>
  
-Nützliche One-Liner +===== Kontrollstrukturen =====
-- Position setzen (Node2D): +
-  - position Vector2(100, 200) +
-- Bewegung: +
-  - velocity velocity.move_toward(target, speed * delta) +
-- Prüfen ob in Gruppe: +
-  - if is_in_group("enemies"): ... +
-- Connect per Code: +
-  - some_node.connect("signal", self, "_method")+
  
-Kurze Beispiele+==== if/elif/else ==== 
 +<codedoc code:python>if x > 0: 
 +   # die Zahl ist größer Null 
 +   pass 
 +elif x < 0: 
 +   # die Zahl ist kleiner Null 
 +   pass 
 +else: 
 +   # die Zahl ist Null 
 +   pass</codedoc>
  
-Player (Grundgerüst+==== match (Godot 4 / GDScript 2.0): ==== 
-```gdscript +<codedoc code:python>match value: 
-extends CharacterBody2D +   1: 
-class_name Player+      ... 
 +   _: 
 +      ...</codedoc> 
 +       
 +==== for/while: ==== 
 +<codedoc code:python>for i in range(5):  
 +   ... 
 + 
 +while cond:  
 +   ...</codedoc> 
 + 
 +===== Fehlerbehandlung & Debug ===== 
 +   * print(), push_error(), push_warning() 
 +   * assert(condition, "message") [[https://docs.godotengine.org/de/4.5/tutorials/scripting/gdscript/gdscript_basics.html#assert-keyword|Online-Doku]] 
 +   *  
 + 
 +===== Best Practices (Kurz) ===== 
 +  * Typisieren wo möglich (besseres Autocomplete & Fehlercheck) 
 +  * Export für Editor-Bearbeitbarkeit 
 +  * onready für Knoten-Referenzen 
 +  * Verwende preload für häufig genutzte Ressourcen 
 +  * Trenne Gameplay-Logik in übersichtliche Methoden 
 +  * Nutze Signals statt eng gekoppelter Node-Referenzen (lockere Kopplung) 
 + 
 +==== Nützliche One-Liner====   
 +=== Position setzen (Node2D) === 
 +<codedoc code:python> position = Vector2(100, 200)</codedoc> 
 +=== Bewegung === 
 +<codedoc code:python>velocity = velocity.move_toward(target, speed * delta)</codedoc> 
 +=== Prüfen ob in Gruppe === 
 +<codedoc code:python>if is_in_group("enemies"):  
 +   ...</codedoc> 
 +=== Connect per Code: === 
 +<codedoc code:python>some_node.connect("signal", self, "_method")</codedoc> 
 + 
 +===== Kurze Beispiele ===== 
 +==== Player (Grundgerüst) ==== 
 +<codedoc code:python>extends CharacterBody2D class_name Player
  
 export var speed: float = 200.0 export var speed: float = 200.0
Zeile 143: Zeile 160:
     if Input.is_action_pressed("ui_left"): dir.x -= 1     if Input.is_action_pressed("ui_left"): dir.x -= 1
     velocity.x = dir.x * speed     velocity.x = dir.x * speed
-    move_and_slide()+    move_and_slide()</codedoc>
  • gdscript/cheatsheet.1760465708.txt.gz
  • Zuletzt geändert: 2025/10/14 20:15
  • von silversurfer