Как настроить автоматическое сохранение в Godot 4?

Как реализовать механизм автоматического сохранения прогресса при выходе из игры и восстановления прогресса при запуске в Godot 4.2 без использования кнопок "Сохранить" и "Загрузить"?
  • 27 июля 2024 г. 10:53
Ответы на вопрос 2
1. Для начала создайте новый скрипт в Godot 4.2, который будет управлять сохранением прогресса игры. Назовем его, например, "SaveManager".

2. В скрипте "SaveManager" создайте функцию для сохранения прогресса игры. Например, функцию saveProgress():

```gd
func saveProgress():
    var save_data = {
        "player_position": player.global_position,
        "player_health": player.hp
        # Добавьте другие данные для сохранения прогресса игры
    }
    
    var save_file = File.new()
    save_file.open("user://savegame.sav", File.WRITE)
    save_file.store_string(to_json(save_data))
    save_file.close()
```

3. Создайте функцию для загрузки прогресса игры из сохраненного файла. Например, функцию loadProgress():

```gd
func loadProgress():
    var save_file = File.new()
    
    if save_file.file_exists("user://savegame.sav"):
        save_file.open("user://savegame.sav", File.READ)
        var save_data = parse_json(save_file.get_as_text())
        save_file.close()
        
        # Восстановление прогресса игры из сохраненных данных
        player.global_position = save_data["player_position"]
        player.hp = save_data["player_health"]
    else:
        # Если сохраненного файла нет, можно выполнить какие-то действия по умолчанию
        # Например, установить начальные значения прогресса игры
```

4. Добавьте вызов функции saveProgress() в нужный момент игры, например, при выходе из игры или при переключении уровня.

5. Чтобы автоматически загружать прогресс игры при запуске, можно добавить вызов функции loadProgress() в метод _ready() узла сцены или в главный узел игры.

Теперь ваша игра будет автоматически сохранять прогресс и восстанавливать его при запуске без необходимости использования кнопок "Сохранить" и "Загрузить".
Псевдокод: 
Если игрок заходит в Area, то мы оставляем в позиции игрока Marker и мы его больше не двигаем и если игрок игрок выходит из игры, то мы сохраняем игру () и если он заходит то мы присваиваем позицию игрока в позицию маркера
Похожие вопросы