extends Button # This script shows how to save data using Godot's custom ConfigFile format. # ConfigFile can store any Godot type natively. # The root game node (so we can get and instance enemies). export(NodePath) var game_node # The player node (so we can set/get its health and position). export(NodePath) var player_node const SAVE_PATH = "user://save_config_file.ini" func save_game(): var config = ConfigFile.new() var player = get_node(player_node) config.set_value("player", "position", player.position) config.set_value("player", "health", player.health) var enemies = [] for enemy in get_tree().get_nodes_in_group("enemy"): enemies.push_back({ position = enemy.position, }) config.set_value("enemies", "enemies", enemies) config.save(SAVE_PATH) get_node("../LoadConfigFile").disabled = false # `load()` is reserved. func load_game(): var config = ConfigFile.new() config.load(SAVE_PATH) var player = get_node(player_node) player.position = config.get_value("player", "position") player.health = config.get_value("player", "health") # Remove existing enemies and add new ones. for enemy in get_tree().get_nodes_in_group("enemy"): enemy.queue_free() var enemies = config.get_value("enemies", "enemies") # Ensure the node structure is the same when loading. var game = get_node(game_node) for enemy_config in enemies: var enemy = preload("res://enemy.tscn").instance() enemy.position = enemy_config.position game.add_child(enemy)