Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
ConfigFile
Hereda: RefCounted < Object
Clase de ayuda para manejar los archivos de tipo INI.
Descripción
Esta clase auxiliar puede utilizarse para almacenar valores Variant en el sistema de archivos usando un formato estilo INI. Los valores almacenados se identifican por una sección y una clave:
[section]
some_key=42
string_example="Hello World3D!"
a_vector=Vector3(1, 0, 2)
Los datos almacenados pueden guardarse o analizarse desde un archivo, aunque los objetos ConfigFile también pueden usarse directamente sin acceder al sistema de archivos.
El siguiente ejemplo muestra cómo crear un ConfigFile simple y guardarlo en el disco:
# Create new ConfigFile object.
var config = ConfigFile.new()
# Store some values.
config.set_value("Player1", "player_name", "Steve")
config.set_value("Player1", "best_score", 10)
config.set_value("Player2", "player_name", "V3geta")
config.set_value("Player2", "best_score", 9001)
# Save it to a file (overwrite if already exists).
config.save("user://scores.cfg")
// Create new ConfigFile object.
var config = new ConfigFile();
// Store some values.
config.SetValue("Player1", "player_name", "Steve");
config.SetValue("Player1", "best_score", 10);
config.SetValue("Player2", "player_name", "V3geta");
config.SetValue("Player2", "best_score", 9001);
// Save it to a file (overwrite if already exists).
config.Save("user://scores.cfg");
Este ejemplo muestra cómo podría cargarse el archivo anterior:
var score_data = {}
var config = ConfigFile.new()
# Load data from a file.
var err = config.load("user://scores.cfg")
# If the file didn't load, ignore it.
if err != OK:
return
# Iterate over all sections.
for player in config.get_sections():
# Fetch the data for each section.
var player_name = config.get_value(player, "player_name")
var player_score = config.get_value(player, "best_score")
score_data[player_name] = player_score
var score_data = new Godot.Collections.Dictionary();
var config = new ConfigFile();
// Load data from a file.
Error err = config.Load("user://scores.cfg");
// If the file didn't load, ignore it.
if (err != Error.Ok)
{
return;
}
// Iterate over all sections.
foreach (String player in config.GetSections())
{
// Fetch the data for each section.
var player_name = (String)config.GetValue(player, "player_name");
var player_score = (int)config.GetValue(player, "best_score");
score_data[player_name] = player_score;
}
Cualquier operación que modifique el ConfigFile, como set_value(), clear() o erase_section(), solo cambia lo que se carga en la memoria. Si deseas escribir el cambio en un archivo, debes guardar los cambios con save(), save_encrypted() o save_encrypted_pass().
Ten en cuenta que los nombres de las secciones y propiedades no pueden contener espacios. Cualquier cosa después de un espacio será ignorada al guardar y al cargar.
Los ConfigFiles también pueden contener líneas de comentario escritas manualmente que comienzan con un punto y coma (;). Esas líneas se ignorarán al analizar el archivo. Ten en cuenta que los comentarios se perderán al guardar el ConfigFile. Esto aún puede ser útil para archivos de configuración de servidores dedicados, que típicamente nunca se sobrescriben sin una acción explícita del usuario.
Nota: La extensión de archivo dada a un ConfigFile no tiene ningún impacto en su formato o comportamiento. Por convención, aquí se usa la extensión .cfg, pero cualquier otra extensión como .ini también es válida. Dado que ni .cfg ni .ini están estandarizados, el formato de ConfigFile de Godot puede diferir de los archivos escritos por otros programas.
Métodos
void |
clear() |
encode_to_text() const |
|
void |
erase_section(section: String) |
void |
erase_section_key(section: String, key: String) |
get_section_keys(section: String) const |
|
get_sections() const |
|
get_value(section: String, key: String, default: Variant = null) const |
|
has_section(section: String) const |
|
has_section_key(section: String, key: String) const |
|
load_encrypted(path: String, key: PackedByteArray) |
|
load_encrypted_pass(path: String, password: String) |
|
save_encrypted(path: String, key: PackedByteArray) |
|
save_encrypted_pass(path: String, password: String) |
|
void |
Descripciones de Métodos
void clear() 🔗
Elimina todo el contenido de la configuración.
String encode_to_text() const 🔗
Obtener la versión de texto de este archivo de configuración (el mismo texto que se escribiría en un archivo).
void erase_section(section: String) 🔗
Borra la sección especificada junto con todos los pares clave-valor que hay dentro. Provoca un error si la sección no existe.
void erase_section_key(section: String, key: String) 🔗
Borra la clave especificada en una sección. Provoca un error si la sección o la clave no existen.
PackedStringArray get_section_keys(section: String) const 🔗
Devuelve un array de todos los identificadores clave definidos en la sección especificada. Levanta un error y devuelve un array vacío si la sección no existe.
PackedStringArray get_sections() const 🔗
Devuelve un array de todos los identificadores de sección definidos.
Variant get_value(section: String, key: String, default: Variant = null) const 🔗
Devuelve el valor actual para la sección y la clave especificadas. Si la sección o la clave no existen, el método devuelve el valor default. Si default no se especifica o se establece en null, también se produce un error.
bool has_section(section: String) const 🔗
Devuelve true si existe la sección especificada.
bool has_section_key(section: String, key: String) const 🔗
Devuelve true si existe el par de claves de lasección especificada.
Loads the config file specified as a parameter. The file's contents are parsed and loaded in the ConfigFile object which the method was called on.
Returns @GlobalScope.OK on success, or one of the other Error values if the operation failed.
Error load_encrypted(path: String, key: PackedByteArray) 🔗
Carga el archivo de configuración cifrado especificado como parámetro, utilizando la key proporcionada para descifrarlo. El contenido del archivo se analiza y se carga en el objeto ConfigFile sobre el cual se llamó al método.
Devuelve @GlobalScope.OK si tiene éxito, o uno de los otros valores de Error si la operación falla.
Error load_encrypted_pass(path: String, password: String) 🔗
Carga el archivo de configuración cifrado especificado como parámetro, utilizando la password proporcionada para descifrarlo. El contenido del archivo se analiza y se carga en el objeto ConfigFile sobre el cual se llamó al método.
Devuelve @GlobalScope.OK si tiene éxito, o uno de los otros valores de Error si la operación falla.
Analiza la cadena de texto pasada como si fuera el contenido de un archivo de configuración. La cadena se analiza y se carga en el objeto ConfigFile sobre el cual se llamó al método.
Devuelve @GlobalScope.OK si tiene éxito, o uno de los otros valores de Error si la operación falla.
Guarda el contenido del objeto ConfigFile en el archivo especificado como parámetro. El archivo de salida utiliza una estructura de estilo INI.
Devuelve @GlobalScope.OK si tiene éxito, o uno de los otros valores de Error si la operación falla.
Error save_encrypted(path: String, key: PackedByteArray) 🔗
Guarda el contenido del objeto ConfigFile en el archivo cifrado con AES-256 especificado como parámetro, utilizando la key proporcionada para cifrarlo. El archivo de salida utiliza una estructura de estilo INI.
Devuelve @GlobalScope.OK si tiene éxito, o uno de los otros valores de Error si la operación falla.
Error save_encrypted_pass(path: String, password: String) 🔗
Guarda el contenido del objeto ConfigFile en el archivo cifrado con AES-256 especificado como parámetro, utilizando la password proporcionada para cifrarlo. El archivo de salida utiliza una estructura de estilo INI.
Devuelve @GlobalScope.OK si tiene éxito, o uno de los otros valores de Error si la operación falla.
void set_value(section: String, key: String, value: Variant) 🔗
Asigna un valor a la clave especificada de la sección especificada. Si la sección o la clave no existen, se crean. Al pasar un valor null se borra la clave especificada si existe, y se borra la sección si termina vacía una vez que se ha eliminado la clave.