reckfellENGINE

ConfigFile

Секции, ключи и типизированные Variant в памяти с явной загрузкой и записью файла.

На этой странице
class ConfigFileReckfellSharpНаследует RefCounted

SetValue меняет память; Save записывает файл. Load и Parse объединяют данные с существующим экземпляром. Для независимой загрузки используйте новый ConfigFile, проверяйте Error и только затем изменяйте игровое состояние.

Обычный Save создаёт текстовый файл с синтаксисом Variant. Шифрованные варианты — отдельные методы; сам ConfigFile не является проверкой достоверности прогресса. Комментарии и исходная вёрстка файла не сохраняются.

GetValue возвращает Variant. У значений, требующих освобождения, есть финализатор как запасной механизм; using освобождает их предсказуемо при выходе из области. В примере тип и конечность позиции проверяются до её выдачи вызывающему коду. ConfigFile уже должен содержать загруженные данные.

C#
using Reckfell;

public static class ConfigPositionExample
{
    public static bool TryReadPosition(ConfigFile data, out Vector3 position)
    {
        position = default;
        if (!data.HasSectionKey("player", "position"))
            return false;
        using Variant value = data.GetValue("player", "position");
        if (value.VariantType != Variant.Type.Vector3)
            return false;
        Vector3 candidate = value.AsVector3();
        if (!candidate.IsFinite())
            return false;
        position = candidate;
        return true;
    }
}

Для записи с резервной копией см. сохранение прогресса.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

ConfigFileКонструктор
# ConfigFile
C#
public ConfigFile();

Создаёт пустое хранилище секций, ключей и Variant в памяти. Сам по себе не открывает файл и не загружает прежние данные.

Методы19

Clearvoid
# Clear
C#
public void Clear();

Удаляет все секции и значения только из памяти этого экземпляра. Не удаляет файл и не сохраняет изменение на диск.

EncodeToTextstring
# EncodeToText
C#
public string EncodeToText();

Создаёт текстовое представление текущих значений без записи файла. Комментарии и исходное форматирование не сохраняются. Не обещает побайтового совпадения с Save: в текущем движке имя секции a]b здесь записывается как [a]b], тогда как Save экранирует закрывающую скобку. Для файлов с такими именами используйте Save.

Возвращает string

Текст секций и значений; пустая строка для пустого ConfigFile.

EraseSectionvoid
# EraseSection
C#
public void EraseSection(string section);

Удаляет секцию вместе со всеми ключами в памяти. Для отсутствующей секции сообщает native-ошибку, а не гарантированное исключение CLR. Сначала используйте HasSection, если отсутствие допустимо. Файл на диске не изменяется.

Параметры
ИмяТипПо умолчанию
sectionstring—
section

Имя существующей секции.

EraseSectionKeyvoid
# EraseSectionKey
C#
public void EraseSectionKey(string section, string key);

Удаляет ключ из секции в памяти. Если ключ был последним, удаляется и секция. Отсутствующие секция или ключ вызывают native-ошибку; для безопасного условного удаления сначала проверяйте HasSectionKey. На диск изменение записывается отдельным Save.

Параметры
ИмяТипПо умолчанию
sectionstring—
keystring—
section

Имя существующей секции.

key

Имя существующего ключа.

GetSectionKeysstring[]
# GetSectionKeys
C#
public string[] GetSectionKeys(string section);

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

Параметры
ИмяТипПо умолчанию
sectionstring—
section

Имя секции в памяти, не путь к файлу.

Возвращает string[]

Массив string[] с именами ключей.

GetSectionsstring[]
# GetSections
C#
public string[] GetSections();

Возвращает массив имён секций текущего экземпляра. Это не список файлов и не значения секций. Не привязывайте логику формата сохранения к позиции имени в массиве.

Возвращает string[]

Массив string[]; пустой, если секций нет.

GetValueVariant
# GetValue
C#
public Variant GetValue(string section, string key, Variant @default = default);

Возвращает значение указанного ключа. Если секция или ключ отсутствуют, возвращает переданный default. При отсутствующем значении и default типа Nil движок также сообщает об ошибке; это не замена явной проверке наличия ключа.

Параметры
ИмяТипПо умолчанию
sectionstring—
keystring—
defaultVariantdefault
section

Имя секции. Пустая строка обозначает значения вне секции.

key

Имя ключа внутри указанной секции.

default

Значение при отсутствии секции или ключа. Передайте явный ненулевой Variant, например 7 или false, чтобы штатно обработать отсутствие значения.

Возвращает Variant

Хранимый Variant либо переданное значение default. Тип результата зависит от сохранённых данных: приведение к нужному C#-типу выполняет вызывающий код.

HasSectionbool
# HasSection
C#
public bool HasSection(string section);

Проверяет наличие секции в памяти без загрузки файла и без ошибки при её отсутствии. Не подтверждает, что в секции есть данные требуемого типа.

Параметры
ИмяТипПо умолчанию
sectionstring—
section

Имя проверяемой секции.

Возвращает bool

true, если секция есть; иначе false.

HasSectionKeybool
# HasSectionKey
C#
public bool HasSectionKey(string section, string key);

Проверяет наличие пары секция/ключ в памяти. При отсутствующей секции возвращает false без ошибки. Тип и диапазон значения проверяйте отдельно после GetValue.

Параметры
ИмяТипПо умолчанию
sectionstring—
keystring—
section

Имя секции.

key

Имя ключа внутри секции.

Возвращает bool

true только при наличии секции и ключа.

LoadError
# Load
C#
public Error Load(string path);

Читает и разбирает файл в текущий ConfigFile. Одноимённые значения заменяются, а отсутствующие в файле существующие значения остаются: Load не очищает объект. Для полной замены используйте новый ConfigFile или Clear() перед загрузкой. Проверяйте возвращённый Error.

Параметры
ИмяТипПо умолчанию
pathstring—
path

Путь к читаемому конфигурационному файлу; например, user://settings.ini. Load не создаёт отсутствующий файл.

Возвращает Error

Error.Ok при успешном чтении и разборе; иначе код ошибки открытия или разбора. Не считайте объект автоматически очищенным после неудачной загрузки.

LoadEncrypted2 перегрузки
# LoadEncrypted · 1/2
C#
public Error LoadEncrypted(string path, byte[] key);

Открывает шифрованный файл с указанным 32-байтным ключом, затем разбирает значения в текущий экземпляр. Как Load, объединяет данные, не очищая старые. Неверный ключ, повреждённый файл или ошибка разбора не означают успешную загрузку: проверяйте Error и применяйте данные из нового объекта только после валидации.

Параметры
ИмяТипПо умолчанию
pathstring—
keybyte[]—
path

Путь к файлу; для пользовательских данных обычно user://.

key

Ровно 32 байта ключа AES. byte[] и ReadOnlySpan<byte> — формы передачи одного ключа, а не разные форматы файла.

Возвращает Error

Error.Ok при успешной расшифровке и разборе; иначе ошибка открытия, формата, ключа или разбора.

# LoadEncrypted · 2/2
C#
public Error LoadEncrypted(string path, ReadOnlySpan<byte> key);

Открывает шифрованный файл с указанным 32-байтным ключом, затем разбирает значения в текущий экземпляр. Как Load, объединяет данные, не очищая старые. Неверный ключ, повреждённый файл или ошибка разбора не означают успешную загрузку: проверяйте Error и применяйте данные из нового объекта только после валидации.

Параметры
ИмяТипПо умолчанию
pathstring—
keyReadOnlySpan<byte>—
path

Путь к файлу; для пользовательских данных обычно user://.

key

Ровно 32 байта ключа AES. byte[] и ReadOnlySpan<byte> — формы передачи одного ключа, а не разные форматы файла.

Возвращает Error

Error.Ok при успешной расшифровке и разборе; иначе ошибка открытия, формата, ключа или разбора.

LoadEncryptedPassError
# LoadEncryptedPass
C#
public Error LoadEncryptedPass(string path, string password);

Загружает файл, записанный SaveEncryptedPass, используя тот же пароль, затем объединяет значения с текущим объектом. Не очищает прежнее состояние и не подтверждает корректность игровых данных: проверяйте Error, типы и диапазоны.

Параметры
ИмяТипПо умолчанию
pathstring—
passwordstring—
path

Путь к файлу; родительская папка должна существовать.

password

Пароль для встроенного преобразования в ключ. Для чтения используйте тот же пароль, не передавайте его строку вместо byte[] в другом overload.

Возвращает Error

Error.Ok при успешной загрузке; иначе код ошибки расшифровки, открытия или разбора.

ParseError
# Parse
C#
public Error Parse(string data);

Разбирает текст и добавляет значения в текущий экземпляр, заменяя совпавшие ключи. Не очищает прежние данные. Изменяет объект по ходу разбора: ошибка не гарантирует откат уже прочитанных значений. Для независимой загрузки разбирайте в новом ConfigFile и проверяйте Error до применения данных к игре.

Параметры
ИмяТипПо умолчанию
datastring—
data

Текст в формате ConfigFile, не имя файла. Значения используют формат Variant; не считайте его полностью совместимым с произвольным INI-парсером.

Возвращает Error

Error.Ok при успешном разборе; иначе ошибка разбора. Объект мог быть изменён частично.

SaveError
# Save
C#
public Error Save(string path);

Записывает текущие значения ConfigFile в файл с INI-подобной структурой. SetValue меняет только память; для записи нужен отдельный Save. Метод не создаёт отсутствующие родительские каталоги.

Параметры
ИмяТипПо умолчанию
pathstring—
path

Путь файла назначения. Для пользовательских настроек используйте доступный для записи путь, например user://settings.ini.

Возвращает Error

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

SaveEncrypted2 перегрузки
# SaveEncrypted · 1/2
C#
public Error SaveEncrypted(string path, byte[] key);

Записывает текущие значения в файл с шифрованием AES-256 и указанным 32-байтным ключом. Не создаёт родительские папки и не выполняет атомарную замену с резервной копией. Ошибка не гарантирует сохранность прежнего файла: открытие на запись происходит до завершения операции.

Параметры
ИмяТипПо умолчанию
pathstring—
keybyte[]—
path

Путь к файлу; для пользовательских данных обычно user://.

key

Ровно 32 байта ключа AES. byte[] и ReadOnlySpan<byte> — формы передачи одного ключа, а не разные форматы файла.

Возвращает Error

Error.Ok при успешном выполнении; иначе код ошибки. Это не гарантия устойчивости при потере питания.

# SaveEncrypted · 2/2
C#
public Error SaveEncrypted(string path, ReadOnlySpan<byte> key);

Записывает текущие значения в файл с шифрованием AES-256 и указанным 32-байтным ключом. Не создаёт родительские папки и не выполняет атомарную замену с резервной копией. Ошибка не гарантирует сохранность прежнего файла: открытие на запись происходит до завершения операции.

Параметры
ИмяТипПо умолчанию
pathstring—
keyReadOnlySpan<byte>—
path

Путь к файлу; для пользовательских данных обычно user://.

key

Ровно 32 байта ключа AES. byte[] и ReadOnlySpan<byte> — формы передачи одного ключа, а не разные форматы файла.

Возвращает Error

Error.Ok при успешном выполнении; иначе код ошибки. Это не гарантия устойчивости при потере питания.

SaveEncryptedPassError
# SaveEncryptedPass
C#
public Error SaveEncryptedPass(string path, string password);

Сохраняет значения с шифрованием и ключом, полученным из пароля встроенным алгоритмом. Это другой способ задания ключа, чем 32 байта в SaveEncrypted. Не выполняет резервное копирование или атомарную замену существующего файла.

Параметры
ИмяТипПо умолчанию
pathstring—
passwordstring—
path

Путь к файлу; родительская папка должна существовать.

password

Пароль для встроенного преобразования в ключ. Для чтения используйте тот же пароль, не передавайте его строку вместо byte[] в другом overload.

Возвращает Error

Error.Ok при успешном выполнении; иначе код ошибки.

SetValuevoid
# SetValue
C#
public void SetValue(string section, string key, Variant value);

Назначает значение в памяти, создавая при необходимости секцию и ключ. Значение Nil, в том числе default(Variant), удаляет ключ; опустевшая секция также удаляется. Сам файл не изменяется до Save.

Параметры
ИмяТипПо умолчанию
sectionstring—
keystring—
valueVariant—
section

Имя секции. Пустая строка обозначает значения вне секции.

key

Имя ключа внутри указанной секции.

value

Сохраняемое в памяти значение Variant. Nil означает удаление ключа, а не запись пустого значения.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.