【问题标题】:Why is Godot having problems with elif statements?为什么 Godot 对 elif 语句有问题?
【发布时间】:2026-02-03 09:00:01
【问题描述】:

所以这里是带有 elif 语句的代码,这个和一般的 elif 语句。我对 Godot 很陌生,这是我跟随一个例子并一起学习的:

扩展了 AnimatedSprite

func _process(delta):

 if Input.is_action_pressed("ui_right"):
  play("Run")
 flip_h = false
 elif  Input.is_action_pressed("ui_left"):
     play("Run")
    flip_h = true
    else:
        play("Idle")
 pass

我得到这个错误:

error(7,3):解析表达式出错,放错地方:elif

那会是什么?我不知道如何解决这个问题。

【问题讨论】:

    标签: godot gdscript


    【解决方案1】:

    这与您如何缩进代码有关。快速浏览一下documentation

    ifelifelse 都应该在同一个缩进级别。语句中的所有内容都应该缩进一层。您的代码如下所示:

    extends AnimatedSprite
    
    func _process(delta): 
      if Input.is_action_pressed("ui_right"):
        play("Run")
        flip_h = false
      elif Input.is_action_pressed("ui_left"):
        play("Run")
        flip_h = true
      else:
        play("Idle")
    

    另外,最后不需要pass,因为您改为调用play("Idle")

    【讨论】:

    • 非常感谢,我一直在努力想办法解决这个问题。缩进敏感度是我在 Python 等中必须习惯的。我觉得减轻了这个负担。我会再次感谢你。