Line has no effect godot 4?
Geld = 0 in global. global.gd
Lives = 3
in world gd
func _ready:
if global.Geld = 10 ( += geht außerdem nicht. obwohl es die bessere wahl wäre).
global.Lives + 1
Testgegner.gd
collision body entered:
if player entered
Game.Geld + 10
(Das ist nur ein Testskript um den Fehler zu schildern)
Fehler im Testgegner:
Standalone expression (the line has no effect)
Warum keinen Effekt, wenn es definiert wurde und durch global überall aufrufbar ist?
2 Antworten
Wenn du die globale Variable `Geld` überall nutzen möchtest, musst du sicherstellen, dass dein `global.gd` Skript als Singleton (Autoload) registriert ist.
Im `world.gd` Skript ist die Syntax für den if-Block nicht korrekt. Du solltest `==` für den Vergleich nutzen und `+=` um `Lives` zu erhöhen, so:
if global.Geld == 10:
global.Lives += 1
Im `Testgegner.gd` Skript könnte die Funktion so aussehen:
func _on_body_entered(body):
if body.name == "Player":
global.Geld += 10
Stelle sicher, dass der Spieler-Körper im Spiel den Namen "Player" hat, damit der Code funktioniert.
Entschuldige die Verwirrung. Das `+=` Zeichen ist ein Verknüpfungsoperator, der die Variable auf der linken Seite um den Wert auf der rechten Seite erhöht. In deinem Fall wird `global.Lives += 1` die `Lives` Variable um 1 erhöhen.
Wenn du `if global.Geld == 10:` schreibst, dann wird der Code im if-Block nur ausgeführt, wenn `Geld` genau 10 ist. Wenn das zutrifft, wird `global.Lives += 1` ausgeführt, was die Anzahl der `Lives` um 1 erhöht.
Die `if`-Anweisung überprüft nur den Wert von `Geld`, und wenn dieser 10 ist, dann erhöht `global.Lives += 1` die Anzahl der Leben um 1.
global.Lives + 1
Ich kenn' mich ja in Godot nicht aus, aber ich vermute mal, hier wird wie in den allermeisten Sprachen das Resultat von global.Lives + 1 gerechnet und verworfen. Die Zeile ist also völlig sinnlos und sollte wohl durch sowas wie
global.Lives = global.Lives + 1
ersetzt werden.
ist es richtig das in der ready function der world zu haben? ich denke daran scheitert es
..aber += erhöht doch nicht, es führt die
aktion aus, wenn es höher oder gleich der zahl ist, also überprüft es nur die leben?
bei global lives += 1