ConfigFile

Наследует: RefCounted < Object

Вспомогательный класс для обработки файлов в стиле INI.

Описание

Этот вспомогательный класс может использоваться для хранения значений Variant в файловой системе с использованием форматирования в стиле INI. Сохраненные значения идентифицируются разделом и ключом:

[section]
some_key=42
string_example="Hello World3D!"
a_vector=Vector3(1, 0, 2)

Сохраненные данные можно сохранить в файл или проанализировать из него, хотя объекты ConfigFile также можно использовать напрямую, без доступа к файловой системе.

В следующем примере показано, как создать простой ConfigFile и сохранить его на диске:

# Создайте новый объект ConfigFile.
var config = ConfigFile.new()

# Сохраните некоторые значения.
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)

# Сохраните его в файле (перезапишите, если он уже существует).
config.save("user://scores.cfg")

В этом примере показано, как можно загрузить указанный выше файл:

var score_data = {}
var config = ConfigFile.new()

# Загрузить данные из файла.
var err = config.load("user://scores.cfg")

# Если файл не загрузился, игнорируйте его.
if err != OK:
    return

# Повторите все разделы.
for player in config.get_sections():
    # Получите данные для каждого раздела.
    var player_name = config.get_value(player, "player_name")
    var player_score = config.get_value(player, "best_score")
    score_data[player_name] = player_score

Любая операция, которая изменяет ConfigFile, например set_value(), clear() или erasure_section(), изменяет только то, что загружено в память. Если вы хотите записать изменение в файл, вам нужно сохранить изменения с помощью save(), save_encrypted() или save_encrypted_pass().

Помните, что имена разделов и свойств не могут содержать пробелы. Все, что находится после пробела, будет проигнорировано при сохранении и загрузке.

Файлы конфигурации также могут содержать вручную написанные строки комментариев, начинающиеся с точки с запятой (;). Эти строки будут проигнорированы при разборе файла. Обратите внимание, что комментарии будут потеряны при сохранении файла конфигурации. Это может быть полезно для выделенных файлов конфигурации сервера, которые обычно никогда не перезаписываются без явного действия пользователя.

Примечание: Расширение файла, присвоенное ConfigFile, не влияет на его форматирование или поведение. По соглашению здесь используется расширение .cfg, но любое другое расширение, например .ini, также допустимо. Поскольку ни .cfg, ни .ini не стандартизированы, форматирование ConfigFile Godot может отличаться от файлов, написанных другими программами.

Методы

void

clear()

String

encode_to_text() const

void

erase_section(section: String)

void

erase_section_key(section: String, key: String)

PackedStringArray

get_section_keys(section: String) const

PackedStringArray

get_sections() const

Variant

get_value(section: String, key: String, default: Variant = null) const

bool

has_section(section: String) const

bool

has_section_key(section: String, key: String) const

Error

load(path: String)

Error

load_encrypted(path: String, key: PackedByteArray)

Error

load_encrypted_pass(path: String, password: String)

Error

parse(data: String)

Error

save(path: String)

Error

save_encrypted(path: String, key: PackedByteArray)

Error

save_encrypted_pass(path: String, password: String)

void

set_value(section: String, key: String, value: Variant)


Описания метода

void clear() 🔗

Удаляет все содержимое конфигурации.


String encode_to_text() const 🔗

Получите текстовую версию этого файла конфигурации (тот же текст, который будет записан в файл).


void erase_section(section: String) 🔗

Удаляет указанный раздел вместе со всеми парами ключ-значение внутри. Выдает ошибку, если раздел не существует.


void erase_section_key(section: String, key: String) 🔗

Удаляет указанный ключ в разделе. Выдает ошибку, если раздел или ключ не существуют.


PackedStringArray get_section_keys(section: String) const 🔗

Возвращает массив всех определенных идентификаторов ключей в указанном разделе. Вызывает ошибку и возвращает пустой массив, если раздел не существует.


PackedStringArray get_sections() const 🔗

Возвращает массив всех определенных идентификаторов разделов.


Variant get_value(section: String, key: String, default: Variant = null) const 🔗

Возвращает текущее значение для указанного раздела и ключа. Если раздел или ключ не существуют, метод возвращает резервное значение default. Если default не указан или установлен в null, также возникает ошибка.


bool has_section(section: String) const 🔗

Возвращает true, если указанный раздел существует.


bool has_section_key(section: String, key: String) const 🔗

Возвращает true, если указанная пара раздел-ключ существует.


Error load(path: String) 🔗

Загружает файл конфигурации, указанный в качестве параметра. Содержимое файла анализируется и загружается в объект ConfigFile, для которого был вызван метод.

Возвращает @GlobalScope.OK в случае успеха или одно из других значений Error, если операция завершилась неудачей.


Error load_encrypted(path: String, key: PackedByteArray) 🔗

Загружает зашифрованный файл конфигурации, указанный в качестве параметра, используя предоставленный key для его расшифровки. Содержимое файла анализируется и загружается в объект ConfigFile, для которого был вызван метод.

Возвращает @GlobalScope.OK в случае успеха или одно из других значений Error, если операция не удалась.


Error load_encrypted_pass(path: String, password: String) 🔗

Загружает зашифрованный файл конфигурации, указанный в качестве параметра, используя предоставленный password для его расшифровки. Содержимое файла анализируется и загружается в объект ConfigFile, для которого был вызван метод.

Возвращает @GlobalScope.OK в случае успеха или одно из других значений Error, если операция не удалась.


Error parse(data: String) 🔗

Анализирует переданную строку как содержимое файла конфигурации. Строка анализируется и загружается в объект ConfigFile, для которого был вызван метод.

Возвращает @GlobalScope.OK в случае успеха или одно из других значений Error, если операция не удалась.


Error save(path: String) 🔗

Сохраняет содержимое объекта ConfigFile в файл, указанный в качестве параметра. Выходной файл использует структуру в стиле INI.

Возвращает @GlobalScope.OK в случае успеха или одно из других значений Error, если операция не удалась.


Error save_encrypted(path: String, key: PackedByteArray) 🔗

Сохраняет содержимое объекта ConfigFile в зашифрованном файле AES-256, указанном в качестве параметра, используя предоставленный key для его шифрования. Выходной файл использует структуру в стиле INI.

Возвращает @GlobalScope.OK в случае успеха или одно из других значений Error, если операция не удалась.


Error save_encrypted_pass(path: String, password: String) 🔗

Сохраняет содержимое объекта ConfigFile в зашифрованном файле AES-256, указанном в качестве параметра, используя предоставленный password для его шифрования. Выходной файл использует структуру в стиле INI.

Возвращает @GlobalScope.OK в случае успеха или одно из других значений Error, если операция не удалась.


void set_value(section: String, key: String, value: Variant) 🔗

Присваивает значение указанному ключу указанного раздела. Если раздел или ключ не существуют, они создаются. Передача значения null удаляет указанный ключ, если он существует, и удаляет раздел, если он оказывается пустым после удаления ключа.