gdscript:cheatsheet

Dies ist eine alte Version des Dokuments!


GDScript — Kurzes Cheatsheet (Deutsch)

Dieses Cheatsheet fasst die wichtigsten Elemente von GDScript (Godot 3 & 4) kompakt zusammen. Codebeispiele sind kurz und direkt anwendbar.

  • Kommentar: # Einzeiliger Kommentar
  • Datei-Scope:
    • extends Node2D # Erbt von einem Node-Typ
    • class_name MyClass # Globaler Klassenname (registriert im Editor)
var x = 5 
var speed: int = 200
const MAX_HP: int = 100 
@onready var sprite = $Sprite 
@export var speed := 200
@export (int, 0, 400) var health := 100   # Hinweis: Hint-Syntax kann je nach Version leicht variieren
func my_func(param: int) → String:
   return str(param)
  1. func _ready(): # nach dem Hinzufügen in die Szene
  2. func _process(delta): # every frame (nicht-physikalisch)
  3. func _physics_process(delta): # physics frame

Sichtbarkeits-/Annotations - @tool # Skript läuft auch im Editor (Godot 3/4) - export, onready, class_name siehe oben

Knoten & Szenen - Zugriff:

  1. var player = get_node(„Player“)
  2. var p = $Player/SubNode

- Instanziieren:

  1. 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 - preload (compile-time, schneller): - var TEX = preload(„res:sprite.png“)

- load (runtime):

  1. var TEX = load(„res:sprite.png“) Signale - Definieren / Emittieren: - signal hit(damage) - emit_signal(„hit“, 10) - Verbinden: - connect(„hit“, self, „_on_hit“) - $Button.connect(„pressed“, self, „_on_pressed“) - Godot 4: Typed signal syntax möglich: - signal hit(damage: int) 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 - 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 - 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 - 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 - print(), push_error(), push_warning() - assert(condition, „message“) 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): - 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 Player (Grundgerüst) ```gdscript extends CharacterBody2D class_name Player export var speed: float = 200.0 onready var sprite = $Sprite func _physics_process(delta): var dir = Vector2.ZERO if Input.is_action_pressed(„ui_right“): dir.x += 1 if Input.is_action_pressed(„ui_left“): dir.x -= 1 velocity.x = dir.x * speed move_and_slide()
  • gdscript/cheatsheet.1760465766.txt.gz
  • Zuletzt geändert: 2025/10/14 20:16
  • von silversurfer