Godot Version
4.2.1 Stable
Question
Hello comrades! I have a problem - I save the game settings, but I absolutely do not understand how to save the screen resolution setting correctly, and the window mode is also not set… I think I did something stupid.
I load the settings like this:
func _ready():
for r in Resolutions:
%Resolution_option.add_item(r)#ВИДЕО ПОДГРУЗКА НАСТРОЕК
var video_settings = ConfigHandler.load_video_settings()%Resolution_option.get_item_text(video_settings.resolution)
%WindowMode_Option.get_item_text(video_settings.fullscreen)#АУДИО ПОДГРУЗКА НАСТРОЕК
var audio_settings = ConfigHandler.load_audio_settings()%Music_HScroller.value = min(audio_settings.music, 1.0) * 100
%SFX_HScroller.value = min(audio_settings.sfx, 1.0) * 100
I save it this way:
func _on_resolution_option_item_selected(index):
%ButtonSound.play()
var ID = %Resolution_option.get_item_text(index)
ConfigHandler.save_video_settings(“resolution”, ID)
print(ID)
get_window().set_size(Resolutions[ID])
Centre_Window()
Aaaand I upload this script in singleton, which manages the ini file with the saved settings:
extends Node
var config = ConfigFile.new()
const SETTINGS_FILE_PATH = “user://settings.ini”func _ready():
if !FileAccess.file_exists(SETTINGS_FILE_PATH):
#Keybinds
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “MoveForward”, “W”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “MoveBackward”, “S”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “MoveRight”, “D”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “MoveLeft”, “A”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “Jump”, “Space”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “Activate”, “F”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “InventoryToggle”, “R”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “Interact”, “E”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “Crouch”, “C”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “Sprint”, “Shift”)
#Video
config.set_value(“ВИДЕО”,“fullscreen”,1)
config.set_value(“ВИДЕО”,“resolution”, “1920x1080”)
config.set_value(“ВИДЕО”,“quality”, 4)
#Audio
config.set_value(“АУДИО”,“sfx”, 60)
config.set_value(“АУДИО”,“music”, 60)config.save(SETTINGS_FILE_PATH) print(config," Saved!")
else:
print(config," Loaded!")
config.load(SETTINGS_FILE_PATH)func save_video_settings(key: String, value):
config.set_value(“ВИДЕО”, key, value)
config.save(SETTINGS_FILE_PATH)func load_video_settings():
var video_settings = {}
for key in config.get_section_keys(“ВИДЕО”):
video_settings[key] = config.get_value(“ВИДЕО”, key)
return video_settingsfunc save_audio_settings(key: String, value):
config.set_value(“АУДИО”, key, value)
config.save(SETTINGS_FILE_PATH)func load_audio_settings():
var audio_settings = {}
for key in config.get_section_keys(“АУДИО”):
audio_settings[key] = config.get_value(“АУДИО”, key)
return audio_settings