reckfellENGINE

Профили возможностей редактора

Скрытие инструментов, наследование ограничений и перенос .profile.

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

Профиль возможностей упрощает интерфейс редактора: скрывает рабочие области, классы при создании Entity и отдельные свойства. Он не удаляет классы из движка, не уменьшает экспорт и не ограничивает доступ скриптов к данным. Используйте профиль, например, для 2D-художника, которому не нужны 3D-инструменты.

Это локальная настройка редактора. Чтобы передать её коллеге, экспортируйте .profile; сохранение сцены само по себе профиль не переносит.

Создайте и примените профиль

Названия ниже приведены для английского интерфейса Reckfell 1.0.0.

  1. Откройте Editor → Manage Editor Features…. Появится окно Manage Editor Feature Profiles.
  2. Нажмите Create Profile, задайте имя, например layout-2d.
  3. В Main Features снимите флажок 3D Editor. Это скрывает рабочую область 3D; классы Entity3D сами по себе ещё не исключены из списка создания.
  4. Если 3D-классы также не нужны в списке создания, снимите флажок у Entity3D в дереве классов. Запрет затронет его native-наследников, включая MeshInstance3D.
  5. Нажмите Make Current. Проверьте имя в Current Profile: выбор профиля для редактирования и его применение — разные действия.
  6. Чтобы вернуть полный интерфейс, нажмите Reset to Default. Это отключает текущий профиль; не нужно удалять сцены, переустанавливать движок или вручную восстанавливать каждое поле.

Редактирование текущего профиля сохраняет изменения и запускает обновление интерфейса с небольшой задержкой. Для другого профиля изменения остаются подготовкой до Make Current.

Выберите нужный уровень ограничения

НастройкаЧто меняет
3D EditorРабочую область 3D. Не равнозначно запрету классов Entity3D.
Класс в деревеДоступность класса и native-наследников в инструментах редактора; старые данные не удаляются.
Enable Contextual Editor у классаДоступность связанного специализированного редактора. Не обещает read-only для всех полей Inspector.
Свойства классаВидимость отдельных свойств в Inspector. Значение свойства и доступ из кода сохраняются.
Scene Tree EditingВозможность редактировать иерархию; сама панель дерева остаётся.

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

Наследование: почему поле или класс всё ещё скрыты

Запрет native-класса действует на потомков. Если отключена Entity3D, включение одной MeshInstance3D не отменяет запрет родителя. Сначала включите родителя. Аналогично наследуется ограничение контекстного редактора класса.

Свойства в API устроены иначе: IsClassPropertyDisabled("CanvasItem", "modulate") читает точную запись. Тот же запрос для Sprite2D вернёт false, если запись сделана только для CanvasItem. Inspector сам обходит родителей, поэтому у Sprite2D поле всё равно может быть скрыто. Не делайте вывод о видимости поля по одному запросу для дочернего класса.

Для API используйте native-имя свойства modulate, а не C#-обёртку Modulate или переведённую подпись. Ограничения классов здесь основаны на native-иерархии ClassDB; не считайте их произвольной системой правил для всех ваших C#-типов.

Передайте профиль коллеге

  1. Выберите нужный профиль и нажмите Export. Сохраните layout-2d.profile.
  2. На другом компьютере откройте то же окно и нажмите Import.
  3. Выберите импортированный профиль и нажмите Make Current.
  4. Если интерфейс стал слишком ограниченным, используйте Reset to Default.

.profile — JSON с маркером "type": "feature_profile", а не обычный ресурс .rdata. Храните экспортированный файл в репозитории команды, если он должен быть общим; личные активные настройки редактора при этом не становятся настройками проекта.

Создайте файл из C#-инструмента

Следующий вспомогательный класс предназначен для C#-кода редактора. Write2D() записывает профиль с отключёнными рабочей областью 3D и веткой Entity3D. TryRead() возвращает новый объект данных, но не активирует его в запущенном редакторе. Для применения файла используйте Import и Make Current.

C#
using Reckfell;

public static class FeatureProfileFiles
{
    public static Error Write2D(string path)
    {
        using var profile = new EditorFeatureProfile();
        profile.SetDisableFeature(EditorFeatureProfile.Feature.Feature3D, true);
        profile.SetDisableClass("Entity3D", true);
        return profile.SaveToFile(path);
    }

    // Reads profile data; this does not activate it in the running editor.
    // The caller owns the returned instance and must dispose it when finished.
    public static bool TryRead(string path, out EditorFeatureProfile? profile, out Error error)
    {
        var candidate = new EditorFeatureProfile();
        error = candidate.LoadFromFile(path);
        if (error == Error.Ok)
        {
            profile = candidate;
            return true;
        }
        candidate.Dispose();
        profile = null;
        return false;
    }
}

Передайте существующий доступный для записи каталог и имя .profile. Проверьте Error от Write2D(); после успешного TryRead() освободите возвращённый экземпляр, когда закончите его читать. Сам профиль не является EditorPlugin и не требует plugin.cfg.

Почему загрузка идёт в новый объект: в 1.0.0 LoadFromFile() не гарантирует полный сброс старого состояния. Если в допустимом JSON нет disabled_features, прежние флаги возможностей сохраняются, хотя записи классов очищаются. Обычный SaveToFile() записывает эту секцию, но для сторонних или сокращённых файлов безопаснее читать в свежий экземпляр. Ошибка загрузки также не является обещанием транзакционного отката всех полей.

Диагностика

ПроблемаРешение
Профиль выбран, интерфейс не изменилсяПроверьте Current Profile и нажмите Make Current.
3D-классы остались после отключения 3D EditorОтдельно отключите ветку Entity3D, если нужно убрать классы при создании.
Включённый дочерний класс всё ещё недоступенПроверьте запрет родительского native-класса.
Не находится поле InspectorПроверьте текущий профиль, запрет класса и свойств его родителей. Для быстрого сравнения используйте Reset to Default.
Профиль «не уменьшил игру»Он меняет интерфейс, а не содержимое или сборку игры.
Файл не импортируетсяНужен экспорт .profile с правильным JSON-маркером; переименование произвольного .rdata не преобразует его в профиль.

Границы проверки

В установленном headless-редакторе 1.0.0 проверены независимые флаги, native-наследование запретов классов/редакторов, точные ключи свойств, сохранение/загрузка всех типов правил в JSON и нюанс повторной загрузки неполного файла. Активный профиль пользователя не менялся. Клики в менеджере, экранная видимость панелей, read-only-состояния, ошибки повреждённых файлов/записи, экспорт игры и другие платформы этим тестом не подтверждены; порядок действий и потребители правил дополнительно сверены с исходниками редактора.

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

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

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

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