You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot中通过屏幕按钮修改进度条值的正确方法及节点错误解决

解决Godot中Button修改ProgressBar数值的节点找不到问题

错误原因

你用的绝对路径/root/ProgressBar不对——从报错信息能看到,你的Button节点在/root/Node2D/Button下面,说明ProgressBar肯定不在/root根节点,大概率和Button是同层级节点(都挂在Node2D下面),所以绝对路径应该是/root/Node2D/ProgressBar,但更推荐用相对路径,避免节点结构变动时路径失效。

修正后的代码方案

方案1:用相对路径直接修改

extends Button

var health = 0

func _pressed():
    health += 10
    print(health)
    # 相对路径:..表示当前节点的父节点(Node2D),再找到其子节点ProgressBar
    get_node("../ProgressBar").value = health
    # 如果是Godot 3版本,也可以用set_value(health)

方案2:提前缓存节点引用(更高效)

每次点击都调用get_node会有微小性能开销,建议在节点就绪时缓存ProgressBar的引用:

extends Button

var health = 0
var progress_bar: ProgressBar  # 声明类型,方便编辑器提示

func _ready():
    # 缓存ProgressBar节点
    progress_bar = $../ProgressBar  # $是Godot的节点路径快捷写法,等价于get_node

func _pressed():
    health += 10
    print(health)
    progress_bar.value = health

额外注意

  • 先确认你的节点结构:ProgressBar必须和Button在同一个父节点(Node2D)下,如果结构不同,要对应调整路径(比如ProgressBar是Button的子节点,就用$ProgressBar)。
  • Godot 4里set_value()已经被简化为直接赋值.value,如果用Godot 3两种写法都可以。

内容的提问来源于stack exchange,提问作者Log Milk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:40:41