Godot 4.1切换场景时如何保持全屏复选按钮的选中状态
问题分析与修复方案
你的核心问题集中在三点:
- 选项菜单场景初始化时未同步按钮的实际全屏状态
- 两个脚本使用的配置文件名大小写不一致(
Config.cfgvsconfig.cfg),导致读写的是不同文件 - 选项菜单脚本的初始化逻辑错误,硬编码按钮状态为
true而非读取配置值
修复步骤
1. 统一配置文件名
将两个脚本中的save_path统一为相同名称,比如都用"user://config.cfg"(严格保持大小写一致)。
2. 修复选项菜单脚本
修改后代码如下,核心是在初始化时同步按钮状态到全局配置值,复用Autoload的配置逻辑:
extends Control # 引用Autoload的全局配置节点(需和你在项目设置中给Autoload脚本起的名称一致) @onready var global_config = get_node("/root/GlobalConfig") # 替换为你场景中全屏按钮的实际节点路径 @onready var fullscreen_button = $FullScreenButton func _ready(): # 同步按钮状态到全局配置的全屏值 fullscreen_button.button_pressed = global_config.fullscreen func _on_back_pressed(): get_tree().change_scene_to_file("res://GameData/Main.tscn") func _on_FullScreen_button_toggled(is_pressed: bool): # 调用全局方法更新状态,避免重复处理ConfigFile global_config.set_fullscreen(is_pressed)
3. 优化Autoload脚本
添加全局方法统一处理全屏状态更新与配置保存,确保所有场景状态一致:
extends Node2D var config = ConfigFile.new() var save_path = "user://config.cfg" var fullscreen = false func _ready(): if config.load(save_path) == OK: fullscreen = config.get_value("Display", "Fullscreen", false) update_window_mode() else: print("加载配置文件失败!") # 初始化默认配置并保存 set_fullscreen(false) func set_fullscreen(new_state: bool): fullscreen = new_state update_window_mode() # 保存配置 config.set_value("Display", "Fullscreen", fullscreen) var save_err = config.save(save_path) if save_err != OK: print("保存配置失败:", save_err) func update_window_mode(): if fullscreen: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) else: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
关键注意事项
- 确保Autoload脚本已在项目设置的「自动加载」列表中启用,且节点名称与脚本中的引用路径一致
- 选项菜单中的按钮节点路径需与你场景中的实际层级匹配
- 统一文件名后,可手动删除之前生成的旧配置文件,避免残留数据干扰
内容的提问来源于stack exchange,提问作者Yousuf Tamer
相关产品推荐
相关产品推荐

