我目前正在为我的游戏制作一个选项菜单,显然其中一个设置是全屏显示。我希望拥有它,以便当您单击它以全屏显示并打开它时,当您离开场景并返回到它时,它仍然显示它处于打开状态。不过目前,它恢复为关闭状态,但仍保持全屏状态。如果您返回到选项菜单,要更改回窗口化,您必须单击两次,第一次将其“设置回”全屏,然后第二次将其识别为全屏,现在需要窗口化。这是我的代码: func _on_fullscreen_toggled(_toggled_on: bool) -> void: #设置全屏状态无论是否窗口化 如果_toggled_on: get_window().set_mode(Window.MODE_FULLSCREEN) 别的: get_window().set_mode(Window.MODE_WINDOWED)
您必须保留您的设置。一种方法是将它们保存在文件中。
创建一个新的脚本文件,将其命名为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)
这是一个简单的代码,它尝试从路径加载文件。它还具有两个函数来获取和设置设置。 该类现在属于您的全局脚本(位于项目设置/全局中)。我将其称为“设置”:
这将为您提供全局变量设置,您可以在所有其他脚本中使用它。
现在在“设置”场景中,您想要从此文件中检索所有必要的信息。这样我们就得到了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
这会将其保存到文件中,下次打开设置场景时,它将从文件中读取设置并相应地设置按钮
我在全局脚本中执行此操作的原因是,您现在可以在玩家打开游戏时加载设置。因此,如果玩家这样设置,您也可以全屏启动游戏。