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.

ConfigFile

Успадковує: RefCounted < Object

Помічник класу для обробки файлів INI-style.

Опис

Цей допоміжний клас можна використовувати для зберігання значень Variant у файловій системі за допомогою форматування у стилі INI. Збережені значення ідентифікуються розділом і ключем:

[section]
some_key=42
string_example="Привіт, світ 3D!"
a_vector=Вектор3(1, 0, 2)

Збережені дані можна зберегти або проаналізувати з файлу, хоча об’єкти ConfigFile також можна використовувати безпосередньо без доступу до файлової системи.

У наступному прикладі показано, як створити простий файл ConfigFile і зберегти його на диску:

[gdscript]
# Створіть новий об'єкт ConfigFile.
var config = ConfigFile.new()

# Зберігати деякі значення.
config.set_value("Гравець1", "ім'я_гравця", "Стів")
config.set_value("Гравець1", "найкращий_результат", 10)
config.set_value("Гравець2", "ім'я_гравця", "V3geta")
config.set_value("Гравець2", "найкращий_результат", 9001)

# Збережіть його у файл (перезапишіть, якщо він уже існує).
config.save("user://scores.cfg")
[/gdscript]
[csharp]
// Створення нового об'єкта ConfigFile.
var config = new ConfigFile();

// Зберігати деякі значення.
config.SetValue("Гравець1", "ім'я_гравця", "Стів");
config.SetValue("Гравець1", "найкращий_результат", 10);
config.SetValue("Гравець2", "ім'я_гравця", "V3geta");
config.SetValue("Гравець2", "найкращий_результат", 9001);

// Збережіть його у файл (перезапишіть, якщо він уже існує).
config.Save("user://scores.cfg");
[/csharp][/codeblocks]

У цьому прикладі показано, як можна завантажити файл вище: [codeblock]

[gdscript] var score_data = {} var config = ConfigFile.new()

# Завантажити дані з файлу. var err = config.load("user://scores.cfg")

# Якщо файл не завантажився, проігноруйте його. якщо помилка != ОК:

return

# Ітерація по всіх розділах. для гравця в 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

[/gdscript] [csharp] var score_data = new Godot.Collections.Dictionary(); var config = new ConfigFile();

// Завантажити дані з файлу. Помилка err = config.Load("user://scores.cfg");

// Якщо файл не завантажився, проігноруйте його. if (err != Error.Ok) {

return;

}

// Ітерація по всіх розділах. foreach (Програвач рядків у config.GetSections()) {

// Отримання даних для кожного розділу. var player_name = (String)config.GetValue(player, "player_name"); var player_score = (int)config.GetValue(player, "best_score"); score_data[player_name] = player_score;

} [/csharp][/codeblocks]

Будь-яка операція, яка змінює ConfigFile, наприклад [method set_value], [method clear] або [method erase_section], змінює лише те, що завантажено в пам’ять. Якщо ви хочете записати зміни у файл, ви повинні зберегти зміни за допомогою [method save], [method save_encrypted] або [method save_encrypted_pass].

Пам’ятайте, що назви розділів і властивостей не можуть містити пробіли. Усе, що стоїть після пробілу, ігноруватиметься під час збереження та завантаження.

Файли конфігурацій також можуть містити написані вручну рядки коментарів, які починаються з крапки з комою ([code];[/code]). Ці рядки будуть проігноровані під час аналізу файлу. Зауважте, що коментарі буде втрачено під час збереження файлу конфігурації. Це може бути корисним для файлів конфігурації виділеного сервера, які зазвичай ніколи не перезаписуються без явної дії користувача.

[b]Примітка:[/b] Розширення файлу, надане ConfigFile, не впливає на його форматування чи поведінку. За домовленістю тут використовується розширення [code].cfg[/code], але будь-яке інше розширення, наприклад [code].ini[/code], також є дійсним. Оскільки ані [code].cfg[/code], ані [code].ini[/code] не стандартизовані, форматування файлу конфігурації 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.

Повертаємо вашу увагу на успіх, або один з інших значень Error, якщо операція не була виконана.


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

Завантажує зашифрований файл config, вказаний як параметр, за допомогою наданої key для розшифрування його. Вміст файлу знаходиться парований і завантажений в об'єкті ConfigFile.

Повертаємо вашу увагу на успіх, або один з інших значень Error, якщо операція не була виконана.


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

Завантажує зашифрований файл config, вказаний як параметр, за допомогою наданої password для розшифрування його. Вміст файлу знаходиться парований і завантажений в об'єкті ConfigFile.

Повертаємо вашу увагу на успіх, або один з інших значень Error, якщо операція не була виконана.


Error parse(data: String) 🔗

Придбання пропущеного рядка як вміст файлу конфігурації. string is parsed і loaded в the ConfigFile об'єкт, який метод був викликаний.

Повертаємо вашу увагу на успіх, або один з інших значень Error, якщо операція не була виконана.


Error save(path: String) 🔗

Заощаджує вміст об'єкта ConfigFile до файлу, зазначеного як параметр. Вихідний файл використовує структуру стилю INI.

Повертаємо вашу увагу на успіх, або один з інших значень Error, якщо операція не була виконана.


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

Заощаджує вміст об'єкта ConfigFile до зашифрованого файлу AES-256, зазначеного в параметрі, за допомогою наданої key, щоб зашифрувати його. Вихідний файл використовує структуру стилю INI.

Повертаємо вашу увагу на успіх, або один з інших значень Error, якщо операція не була виконана.


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

Заощаджує вміст об'єкта ConfigFile до зашифрованого файлу AES-256, зазначеного в параметрі, за допомогою наданої password, щоб зашифрувати його. Вихідний файл використовує структуру стилю INI.

Повертаємо вашу увагу на успіх, або один з інших значень Error, якщо операція не була виконана.


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

Призначає значення до вказаного ключа вказаного розділу. Якщо не існує, то вони створюються. Передача значення null видаляє зазначений ключ, якщо він існує, і видаляє розділ, якщо він закінчується порожнім, як тільки ключ був видалений.