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

Godot 4.1切换场景时如何保持全屏复选按钮的选中状态

问题分析与修复方案

你的核心问题集中在三点:

  1. 选项菜单场景初始化时未同步按钮的实际全屏状态
  2. 两个脚本使用的配置文件名大小写不一致(Config.cfg vs config.cfg),导致读写的是不同文件
  3. 选项菜单脚本的初始化逻辑错误,硬编码按钮状态为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:00:57