如何在 Godot 4.3 中的场景加载之间保存全屏状态

问题描述 投票:0回答:1

我目前正在为我的游戏制作一个选项菜单,显然其中一个设置是全屏显示。我希望拥有它,以便当您单击它以全屏显示并打开它时,当您离开场景并返回到它时,它仍然显示它处于打开状态。不过目前,它恢复为关闭状态,但仍保持全屏状态。如果您返回到选项菜单,要更改回窗口化,您必须单击两次,第一次将其“设置回”全屏,然后第二次将其识别为全屏,现在需要窗口化。这是我的代码: func _on_fullscreen_toggled(_toggled_on: bool) -> void: #设置全屏状态无论是否窗口化 如果_toggled_on: get_window().set_mode(Window.MODE_FULLSCREEN) 别的: get_window().set_mode(Window.MODE_WINDOWED)

user-interface fullscreen godot godot4
1个回答
0
投票

您必须保留您的设置。一种方法是将它们保存在文件中。

创建一个新的脚本文件,将其命名为settings.gd

代码看起来像这样:

extends Node

var config = ConfigFile.new()

# Called when the node enters the scene tree for the first time.
func _ready() -> void:
    load_settings()

func load_settings() -> void:
    var err = config.load("user://settings.cfg")
    # If the file didn't load, ignore it.
    if err != OK:
        return

func save_settings() -> void:
    config.save("user://settings.cfg")

func set_setting(name, value) -> void:
    config.set_value("settings", name, value)

func get_setting(name):
    return config.get_value("settings", name)

这是一个简单的代码,它尝试从路径加载文件。它还具有两个函数来获取和设置设置。 该类现在属于您的全局脚本(位于项目设置/全局中)。我将其称为“设置”: enter image description here

这将为您提供全局变量设置,您可以在所有其他脚本中使用它。

现在在“设置”场景中,您想要从此文件中检索所有必要的信息。这样我们就得到了on_ready中的信息:

func _ready() -> void:
    $FullscreenToggle.button_pressed = false
    var fs_setting = Settings.get_setting("fullscreen")
    if (fs_setting != null and fs_setting is bool):
        $FullscreenToggle.button_pressed = fs_setting

FullscreenToggle 是我的示例项目中的一个复选按钮。我默认为 false,因为这里,但我想你应该根据你的启动选项来设置它。 然后我尝试阅读“全屏”设置。第一次尝试时该值为空,因为文件尚未写入。

如果用户切换按钮,您将执行代码并在文件中设置“全屏”选项:

func _on_check_button_toggled(toggled_on: bool) -> void:
    Settings.set_setting("fullscreen", toggled_on)
    if toggled_on:
        get_window().set_mode(Window.MODE_FULLSCREEN) 
    else: 
        get_window().set_mode(Window.MODE_WINDOWED)
    Settings.save_settings() #You could add aa confirm button and only do this after he set all settings

这会将其保存到文件中,下次打开设置场景时,它将从文件中读取设置并相应地设置按钮

我在全局脚本中执行此操作的原因是,您现在可以在玩家打开游戏时加载设置。因此,如果玩家这样设置,您也可以全屏启动游戏。

© www.soinside.com 2019 - 2024. All rights reserved.