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:17] – [Lebenszyklus-Hooks] silversurfergdscript:cheatsheet [2025/10/14 20:51] (aktuell) – [Fehlerbehandlung & Debug] silversurfer
Zeile 35: Zeile 35:
  
 ==== Sichtbarkeits-/Annotations ==== ==== Sichtbarkeits-/Annotations ====
 +<codedoc code:python>@tool         # Skript läuft auch im Editor (Godot 3/4) export, onready, class_name siehe oben</codedoc>
  
-- @tool         # Skript läuft auch im Editor (Godot 3/4) +===== Knoten & Szenen =====
-- export, onready, class_name siehe oben+
  
-Knoten & Szenen +==== Zugriff ==== 
-Zugriff: +<codedoc code:python>var player = get_node("Player"
-  var player = get_node("Player"+var p = $Player/SubNode</codedoc> 
-  var p = $Player/SubNode +==== Instanziieren ==== 
-Instanziieren: +<codedoc code:python>var Packed = preload("res://Enemy.tscn"
-  var Packed = preload("res://Enemy.tscn"+var enemy = Packed.instantiate()   # Godot 4 
-  var enemy = Packed.instantiate()   # Godot 4 +var enemy = Packed.instance()      # Godot 3 (alte Methode) 
-  var enemy = Packed.instance()      # Godot 3 (alte Methode) +add_child(enemy)</codedoc> 
-  add_child(enemy) +==== Entfernen ==== 
-Entfernen: +<codedoc code:python>queue_free()</codedoc>
-  queue_free()+
  
-Ressourcen laden +===== Ressourcen laden ===== 
-preload (compile-time, schneller): +==== preload (compile-time, schneller) ==== 
-  var TEX = preload("res://sprite.png"+<codedoc code:python>var TEX = preload("res://sprite.png")</codedoc> 
-load (runtime): +==== load (runtime) ==== 
-  var TEX = load("res://sprite.png")+<codedoc code:python>var TEX = load("res://sprite.png")</codedoc>
  
-Signale +===== Signale ===== 
-Definieren / Emittieren: +==== Definieren / Emittieren ==== 
-  signal hit(damage) +<codedoc code:python>signal hit(damage) 
-  emit_signal("hit", 10) +emit_signal("hit", 10)</codedoc> 
-Verbinden: +==== Verbinden ==== 
-  connect("hit", self, "_on_hit"+<codedoc code:python>connect("hit", self, "_on_hit"
-  $Button.connect("pressed", self, "_on_pressed"+$Button.connect("pressed", self, "_on_pressed")</codedoc> 
-Godot 4: Typed signal syntax möglich: +==== Godot 4: Typed signal syntax möglich ==== 
-  signal hit(damage: int)+<codedoc code:python>signal hit(damage: int)</codedoc>
  
-Eingabe (Input) +===== Eingabe (Input) =====
-- _input(event) +
-  - func _input(event): +
-      if event is InputEventKey and event.pressed: +
-          if event.scancode == KEY_SPACE: +
-              jump() +
-- Input-Mapping (Project Settings -> InputMap): +
-  - if Input.is_action_pressed("ui_right"): ...+
  
-Await / Coroutines / Timer +==== _input(event) ==== 
-- Godot 3 yield: +<codedoc code:python>func _input(event)
-  - yield(get_tree().create_timer(1.0), "timeout"+   if event is InputEventKey and event.pressed: 
-Godot 4 await: +      if event.scancode == KEY_SPACE: 
-  await get_tree().create_timer(1.0).timeout +         jump()</codedoc> 
-- Timer-Node+==== Input-Mapping (Project Settings -> InputMap==== 
-  - $Timer.start(2.0)+<codedoc code:python>if Input.is_action_pressed("ui_right"): 
 + ...</codedoc>
  
-Collections +===== Await / Coroutines / Timer =====
-- Array: +
-  - var a [1, 2, 3] +
-  - a.append(4) +
-  - for i in a: ... +
-- Dictionary: +
-  - var d {"hp": 10, "name": "Player"+
-  - if d.has("hp"): ...+
  
-Kontrollstrukturen +==== Godot 3 yield ==== 
-- if/elif/else: +<codedoc code:python>yield(get_tree().create_timer(1.0), "timeout")</codedoc> 
-  - if x 0: +==== Godot 4 await ==== 
-      pass +<codedoc code:python>await get_tree().create_timer(1.0).timeout</codedoc> 
-- match (Godot 4 / GDScript 2.0): +==== Timer-Node ==== 
-  - match value: +<codedoc code:python>$Timer.start(2.0)</codedoc>
-      1: +
-        ... +
-      _: +
-        ... +
-- for/while: +
-  for i in range(5): ... +
-  - while cond: ...+
  
-Fehlerbehandlung & Debug +===== Collections ===== 
-- print()push_error()push_warning() +==== Array ==== 
-- assert(condition, "message")+<codedoc code:python>var a = [123] 
 +a.append(4
 +for i in a:  
 +   ...</codedoc> 
 +==== Dictionary: ==== 
 +<codedoc code:python>var d = {"hp": 10, "name": "Player"
 +if d.has("hp"):  
 +   ... </codedoc>
  
-Best Practices (Kurz) +===== Kontrollstrukturen =====
-- 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 +==== if/elif/else ==== 
-- Position setzen (Node2D)+<codedoc code:python>if x > 0
-  - position = Vector2(100, 200) +   # die Zahl ist größer Null 
-- Bewegung+   pass 
-  - velocity = velocity.move_toward(target, speed * delta) +elif x < 0
-- Prüfen ob in Gruppe: +   # die Zahl ist kleiner Null 
-  - if is_in_group("enemies")... +   pass 
-- Connect per Code: +else
-  - some_node.connect("signal", self, "_method")+   # die Zahl ist Null 
 +   pass</codedoc>
  
-Kurze Beispiele+==== match (Godot 4 / GDScript 2.0): ==== 
 +<codedoc code:python>match value: 
 +   1: 
 +      ... 
 +   _: 
 +      ...</codedoc> 
 +       
 +==== for/while: ==== 
 +<codedoc code:python>for i in range(5):  
 +   ...
  
-Player (Grundgerüst+while cond:  
-```gdscript +   ...</codedoc> 
-extends CharacterBody2D + 
-class_name Player+===== 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 144: 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.1760465835.txt.gz
  • Zuletzt geändert: 2025/10/14 20:17
  • von silversurfer