reckfellENGINE

Настройки проекта: чтение, применение и сохранение

Отличить конфигурацию от состояния игры и сохранить нужные данные.

На этой странице

ProjectSettings хранит конфигурацию проекта из project.reckfell. Значение в этой конфигурации и текущее состояние работающей игры могут различаться. Настройки игрока и сохранённый прогресс храните отдельно: сохранение данных.

Найти и изменить настройку

Откройте Project → Project Settings → General. Найдите параметр через Filter Settings; если его нет в обычном списке, включите Advanced Settings. Полное имя для C# имеет вид application/run/max_fps: подписи категорий интерфейса могут быть локализованы, программный ключ менять нельзя.

Изменение в редакторе сохраняется в project.reckfell. Не редактируйте этот файл одновременно редактором и внешним инструментом: одно сохранение может затереть другое. Изменения настроек запуска проверяйте новым запуском проекта, а не только по значению в инспекторе.

Прочитать свою настройку безопасно

В project.reckfell можно определить игровое значение:

Конфигурация
[game]
starting_lives=3

В коде полный ключ — game/starting_lives. Сохраните этот помощник в ProjectOptions.cs C#-проекта Reckfell 1.0.0:

C#
using Reckfell;
using System;

public static class ProjectOptions
{
    public static int StartingLives
    {
        get
        {
            Variant value = ProjectSettings.GetSetting("game/starting_lives", 3);
            return value.VariantType == Variant.Type.Int
                ? (int)Math.Clamp(value.AsInt64(), 1, 99)
                : 3;
        }
    }

    public static void ApplyFpsLimit(int fps) => Engine.MaxFps = Math.Max(0, fps);
}

ProjectOptions.StartingLives возвращает число жизней. Если ключ отсутствует или вместо целого записана строка, используется 3. Целое ограничивается диапазоном 1–99 до преобразования в C# int, включая значения вне диапазона Int32.

GetSetting(name, defaultValue) не создаёт отсутствующий ключ и не исправляет его тип. Для проверки существования используйте HasSetting; для значения с активными feature tags — GetSettingWithOverride, как в руководстве по меткам.

Конфигурация и состояние игры

ProjectSettings.SetSetting("application/run/max_fps", 144) меняет запись настройки. В проверенном процессе текущий Engine.MaxFps остался прежним. Для изменения ограничения во время игры вызовите ProjectOptions.ApplyFpsLimit(60) и читайте состояние из Engine.MaxFps.

Помощник трактует 0 и отрицательные значения как отсутствие лимита. Это не обещание конкретной частоты кадров: V-Sync, производительность и другие ограничения остаются. Изменение Engine.MaxFps не переписывает значение в ProjectSettings.

Не переносите правило одного параметра на все остальные. Многие настройки применяются только при запуске, другие имеют собственный API времени выполнения. Смотрите описание конкретного параметра и проверяйте именно поведение игры.

Сохранение из кода

ДействиеЧто меняется
SetSetting(name, value)Значение в памяти текущего процесса. Само по себе не записывает файл.
SetSetting(name, default)Удаляет ключ: здесь default имеет тип Variant и означает Nil. Это не сброс к исходному значению.
SetInitialValue(name, value)Устанавливает исходное значение уже существующей настройки; не заменяет текущее. Значения, равные исходным, пропускаются при сохранении.
Save()Сохраняет конфигурацию в project.reckfell. Подходит для инструментов редактора, а не для обычного меню настроек игрока.
SaveCustom(path)Сохраняет конфигурацию по указанному пути и возвращает Error. Не ограничивается одним вашим ключом.

Для текстового файла SaveCustom принимает окончание .reckfell или override.cfg; для двоичного — .binary. Произвольный .json этим методом не поддерживается. Успех проверяется сравнением с Error.Ok. Запись другого файла не загружает его автоматически обратно в текущий процесс.

Для пользовательских настроек выбирайте отдельный ConfigFile в user://, чтобы не переписывать конфигурацию всего проекта. asset:// используется в проверке как каталог отдельного тестового проекта; в экспортированной игре не рассчитывайте на его доступность для записи.

Диагностика

  • Значение прочитано, но игра не изменилась: найдите соответствующий API времени выполнения или перезапустите проект.
  • После перезапуска изменение исчезло: менялась только память; проверьте путь записи и код ошибки.
  • Настройка не попала в файл: проверьте её исходное значение; равные исходным значения пропускаются.
  • Возвращается неверный тип: проверьте исходный Variant, не полагайтесь на преобразование строки в число.

Проверено в установленном движке: помощник, отсутствующий ключ и тип, границы целого, удаление Nil, различие записи и текущего FPS, сохранение в отдельный текстовый файл с повторным чтением через ConfigFile. Действия мышью в редакторе, применение всех настроек, автоматическая загрузка override.cfg, экспорт и восстановление после перезапуска отдельно не проверены.

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

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

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

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