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

Godot技术求助:如何通过变量访问Autoload文件?

修正方案及代码调整

核心问题梳理

你之前的代码主要有两个关键错误:

  1. 数组items存储的不是按钮节点的名称字符串,而是尝试引用当前脚本未定义的变量a、b;
  2. 动态访问Autoload变量时的逻辑偏差,以及节点获取的细节问题。

完整修正代码

首先调整数组初始化,确保存储按钮名称字符串:

# 存储场景中按钮节点的名称
var items = ["a", "b"]

然后修改store函数,优化遍历逻辑并修正变量与节点的访问方式:

func store(item_names: Array):
    # 直接遍历数组中的每个节点名称
    for item_name in item_names:
        # 动态获取Autoload文件中对应的变量值
        var save_value = saveLoad.get(item_name)
        # 获取场景中的目标按钮节点
        var target_button = get_node(item_name)

        # 根据变量值控制按钮可见性
        if save_value == 0:
            target_button.visible = false

最后在_ready回调中调用函数:

func _ready():
    store(items)

关键细节说明

  • 数组内容修正:必须用["a", "b"]存储按钮的名称字符串,而非无引号的[a, b]——后者会尝试读取当前脚本的a、b变量(未定义会直接报错),无法正确指向场景中的按钮节点。
  • Autoload名称匹配:确保代码中的saveLoad与你在项目设置中Autoload的名称完全一致(注意大小写,你补充代码里的Savenload属于拼写错误,需和文件名saveLoad.gd对应)。
  • 动态变量访问:saveLoad.get(item_name)通过字符串名称动态访问Autoload中的变量,完美解决了saveLoad.itemname被识别为固定变量名的问题。
  • 节点获取优化:get_node(item_name)是Godot中通过名称获取节点的标准方式,也可以用更简洁的$"%s" % item_name替代。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:12:29