EditorExportPreset
Настройки и ручной выбор ресурсов экспортного пресета.
EditorExportPreset получают из платформы через CreatePreset или из контекста export plugin. Новый standalone-пресет не добавлен в пользовательский список и не становится Runnable автоматически. В C# этого типа доступны перечисленные getters; не придумывайте публичные SetExportFilter или SetFileExportMode по именам внутренних C++-методов.
GetFilesToExport — ручной набор, а не готовое содержимое сборки. Для ExportAllResources он может быть пустым. ExportSelectedScenes отбирает сериализованные иерархии PackedEntity, включая уровни .rscene и префабы .rprefab, по типу ресурса; название enum сохранено в SDK. Итоговый набор дополнительно зависит от зависимостей, фильтров и export plugins.
GetCustomizedFiles возвращает копию Dictionary со строками strip/keep/remove. GetFileExportMode проверяет только точный путь, не правила родителей. GetCustomFeatures — исходная строка с запятыми. GetProjectSetting применяет features пресета, поэтому результат может отличаться от хостового ProjectSettings.
GetOrEnv отдаёт окружение как строку без преобразования типа. Следующий полный помощник явно разбирает числовую опцию и строго проверяет 64 hex-символа ключа перед нативным ResolveEncryptionKey:
using System;
using System.Globalization;
using Reckfell;
public static class ExportPresetTools
{
public static int ReadInt(EditorExportPreset preset, StringName option, string environmentVariable)
{
using var value = preset.GetOrEnv(option, environmentVariable);
if (value.VariantType == Variant.Type.Int)
return checked((int)value.AsInt64());
if (value.VariantType == Variant.Type.String &&
int.TryParse(value.AsString(), NumberStyles.Integer, CultureInfo.InvariantCulture, out int parsed))
return parsed;
throw new InvalidOperationException($"Export option '{option}' must be a 32-bit integer.");
}
public static bool IsEncryptionKey(string? text)
{
if (text is null || text.Length != 64) return false;
foreach (char character in text)
if (!Uri.IsHexDigit(character)) return false;
return true;
}
}GetEncryptionKey читает сохранённую строку, ResolveEncryptionKey учитывает окружение и кэширует байты при первом вызове. Смена окружения не обновляет этот кэш. Подготовьте среду до первого разрешения ключа; не переиспользуйте уже разрешённый пресет после смены среды. Нативный разбор проверяет длину, но не является строгой hex-валидацией. Ключи не включайте в логи.
GetVersion форматирует только fallback из версии проекта: при пустой опции 1.0.0 может стать 1.0.0.0 для Windows metadata; непустая опция возвращается без нормализации. Это формат метаданных, не новая версия движка.
Проверены отдельный Windows-пресет, getters, типы Variant, feature override, версии, кэш ключа и полный помощник в текущем редакторе. Использовались синтетические значения только в тестовом процессе. Реальное шифрование PCK, состав пакета с зависимостями, экспорт, интерфейс и запуск на целевых платформах этим прогоном не подтверждены.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Методы26
AreAdvancedOptionsEnabledbool
public bool AreAdvancedOptionsEnabled();Возвращает, показываются ли расширенные опции: учитывает временный поиск опций и настройку редактора _export_preset_advanced_mode. Это не признак расширенных возможностей экспортируемой игры и не отдельный сохранённый флаг этого пресета.
boolТекущая видимость расширенных опций с учётом поиска.
GetCustomFeaturesstring
public string GetCustomFeatures();Возвращает исходную строку пользовательских feature tags, разделённых запятыми, а не массив и не полный набор features платформы. GetProjectSetting разбирает и добавляет их при выборе override.
stringИсходная строка feature tags с запятыми; изначально пустая.
GetCustomizedFilesReckfell.Collections.Dictionary
public Reckfell.Collections.Dictionary GetCustomizedFiles();Возвращает новый Dictionary с явно настроенными путями файлов или каталогов. Значения — строки strip, keep или remove, а не числа FileExportMode. Изменение словаря не изменяет пресет. Пустой результат не означает, что экспорт не содержит файлов.
Reckfell.Collections.DictionaryНовый Dictionary: путь → строка strip/keep/remove.
GetCustomizedFilesCountint
public int GetCustomizedFilesCount();Число записей явной настройки путей, включая каталоги; не число файлов в конечной сборке и не число зависимостей. Изначально 0.
intЧисло явно настроенных путей, включая каталоги.
GetEncryptDirectorybool
public bool GetEncryptDirectory();Читает запрос шифрования каталога PCK; изначально false. Не подтверждает успешное шифрование, правильность ключа или наличие согласованного шаблона экспорта.
boolЗапрошено ли шифрование каталога PCK.
GetEncryptPckbool
public bool GetEncryptPck();Читает флаг шифрования данных пакета; изначально false. Фактический выбор файлов зависит также от encryption include/exclude filters. Этот getter сам ничего не шифрует.
boolВключён ли запрос шифрования пакета.
GetEncryptionExFilterstring
public string GetEncryptionExFilter();Возвращает исходную строку масок исключения из шифрования, разделённых запятыми. Это не общий ExcludeFilter: исключённый из шифрования файл может оставаться в пакете.
stringИсходная строка масок исключения из шифрования.
GetEncryptionInFilterstring
public string GetEncryptionInFilter();Возвращает исходную строку масок включения в шифрование, разделённых запятыми. Это отдельная настройка от общего IncludeFilter и флага шифрования каталога PCK.
stringИсходная строка масок включения в шифрование.
GetEncryptionKeystring
public string GetEncryptionKey();Возвращает сохранённую строку ключа из пресета, изначально пустую. Не учитывает RECKFELL_SCRIPT_ENCRYPTION_KEY и не возвращает результат ResolveEncryptionKey. Не выводите значение в журналы.
stringСохранённый текст ключа, без override окружения.
GetExcludeFilterstring
public string GetExcludeFilter();Возвращает исходные маски исключения файлов из экспорта, разделённые запятыми. Общий exclude применяется после общего include. Getter не вычисляет итоговый набор и не относится к encryption filters.
stringИсходная строка общих масок исключения.
GetExportFilterEditorExportPreset.ExportFilter
public EditorExportPreset.ExportFilter GetExportFilter();Возвращает режим начального выбора ресурсов, по умолчанию ExportAllResources. Ручной список используется по-разному: выбранные иерархии/ресурсы с зависимостями, исключённые ресурсы либо отдельные правила ExportCustomized. Последующие фильтры и export plugins могут изменить состав результата.
EditorExportPreset.ExportFilterТекущий режим выбора ресурсов.
GetExportPathstring
public string GetExportPath();Возвращает сохранённый путь вывода, изначально пустой. Он может быть относительным к проекту: нативная настройка преобразует абсолютный путь в относительный. Getter не создаёт каталог и не сообщает путь последнего фактического файла экспорта.
stringСохранённый, возможно относительный путь вывода.
GetFileExportModeEditorExportPreset.FileExportMode
public EditorExportPreset.FileExportMode GetFileExportMode(string path, EditorExportPreset.FileExportMode @default = EditorExportPreset.FileExportMode.NotCustomized);Ищет явную настройку ровно указанного пути; если записи нет, возвращает параметр default. Сам метод не ищет правила родительских каталогов и не проверяет существование файла. Итоговое наследование при экспорте обрабатывается отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
default | EditorExportPreset.FileExportMode | EditorExportPreset.FileExportMode.NotCustomized |
pathТочный путь файла или каталога вида asset://; метод не обходит родителей.
defaultРезультат при отсутствии явной записи; по умолчанию NotCustomized.
EditorExportPreset.FileExportModeЯвный режим точного пути либо переданный default.
GetFilesToExportstring[]
public string[] GetFilesToExport();Возвращает отдельный string[] вручную выбранных путей. Смысл списка зависит от ExportFilter; при ExportAllResources он может быть пустым, хотя проект экспортируется. Это не полный набор файлов с зависимостями. Порядок HashSet не гарантирован.
string[]Копия ручного набора путей без гарантированного порядка.
GetIncludeFilterstring
public string GetIncludeFilter();Возвращает исходные маски дополнительного включения файлов, разделённые запятыми. Это не список уже включённых ресурсов. Общий ExcludeFilter применяется позже и может убрать совпавший файл.
stringИсходная строка общих масок дополнительного включения.
GetOrEnvVariant
public Variant GetOrEnv(StringName name, string envVar);Если указанная переменная окружения непустая, возвращает её как Variant типа String; преобразования в тип опции нет. Иначе читает опцию пресета с её собственным типом и возможным plugin override. Для fallback передавайте существующее имя опции; для возвращённого Variant используйте using.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
envVar | string | — |
nameСуществующее имя опции для fallback, например debug/export_console_wrapper.
envVarИмя переменной окружения. Непустое значение возвращается строкой без преобразования типа.
VariantString Variant из непустого окружения либо значение опции собственного типа.
GetPatchesstring[]
public string[] GetPatches();Возвращает отдельный string[] путей базовых пакетов в сохранённом порядке. Метод не открывает пакеты, не проверяет их существование и не строит patch. Пустой список не означает ошибку обычного экспорта.
string[]Копия упорядоченного списка путей базовых пакетов.
GetPresetNamestring
public string GetPresetName();Возвращает имя этого пресета. Новый standalone-пресет из CreatePreset может иметь пустое имя; имя не равно автоматически платформе и не является версией игры.
stringИмя пресета; у нового экземпляра может быть пустым.
GetProjectSettingVariant
public Variant GetProjectSetting(StringName name);Читает ProjectSettings с features платформы, пресета и пользовательскими tags. Поэтому результат может отличаться от обычного чтения в редакторе на хостовой ОС. Передавайте существующий ключ и проверяйте VariantType; результат требует Dispose/using.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
nameСуществующий ключ ProjectSettings, а не ключ export_presets.cfg.
VariantVariant настройки после применения feature overrides пресета.
GetScriptExportModeEditorExportPreset.ScriptExportMode
public EditorExportPreset.ScriptExportMode GetScriptExportMode();Возвращает режим экспорта встроенного скриптового формата; по умолчанию BinaryTokensCompressed. Это не шифрование PCK и не выбор конфигурации ExportDebug/ExportRelease для C#-публикации.
EditorExportPreset.ScriptExportModeText, BinaryTokens или BinaryTokensCompressed.
GetVersionstring
public string GetVersion(StringName name, bool windowsVersion);Читает строковую опцию версии. Непустое значение возвращается как есть. Только при пустой опции использует application/config/version и нормализует fallback, включая четырёхкомпонентный формат при windowsVersion=true. Метод не является общим валидатором semver и не возвращает версию движка.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
windowsVersion | bool | — |
nameСуществующая строковая опция версии, например application/file_version в Windows-пресете.
windowsVersionПрименять четырёхкомпонентный Windows-формат к fallback. Непустое значение самой опции не нормализуется.
stringСтрока из опции либо нормализованный fallback версии проекта.
Hasbool
public bool Has(StringName property);Проверяет наличие имени в карте опций экспорта, не его видимость или ненулевое значение. Не заменяет проверку наследуемых Resource-свойств: например, resource_name не является такой опцией.
| Имя | Тип | По умолчанию |
|---|---|---|
property | StringName | — |
propertyТочное имя опции, например binary_format/architecture.
boolTrue, если имя присутствует в карте опций.
HasExportFilebool
public bool HasExportFile(string path);Проверяет точное членство пути в ручном наборе selected files. Не проверяет наличие файла на диске и не гарантирует его присутствие в итоговой сборке: смысл набора зависит от ExportFilter.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathТочный путь в ручном наборе; обычно asset://. Существование на диске не проверяется.
boolTrue, если точный путь записан в ручном наборе.
IsDedicatedServerbool
public bool IsDedicatedServer();Возвращает сохранённый флаг dedicated-server пресета, изначально false. Это не проверка --headless текущего редактора и не подтверждение, что все визуальные ресурсы удалены из результата.
boolСохранённый флаг dedicated-server пресета.
IsRunnablebool
public bool IsRunnable();Показывает, выбран ли именно этот пресет как Runnable для его платформы в EditorExport. Standalone-пресет из CreatePreset сам не становится runnable. True не подтверждает доступность устройства, шаблонов или успешный запуск.
boolВыбран ли этот пресет как runnable для своей платформы.
ResolveEncryptionKeybyte[]
public byte[] ResolveEncryptionKey();При первом вызове берёт непустой RECKFELL_SCRIPT_ENCRYPTION_KEY, иначе сохранённую строку, и кэширует полученный массив. Для длины 64 формирует 32 байта; для другой длины — пустой массив. Нативный разбор не является строгой проверкой hex: предварительно проверяйте все символы. Смена окружения после первого вызова не обновляет кэш этого пресета. GetEncryptionKey при этом всё ещё возвращает сохранённую строку.
byte[]Копия кэшированных 32 байт либо пустой массив; длина 32 сама не доказывает корректный hex или совместимость шаблона.
EditorExportPreset.ExportFilter
EditorExportPreset.FileExportMode
| Значение | Описание |
|---|---|
Keep = 2 | |
NotCustomized = 0 | |
Remove = 3 | |
Strip = 1 |
EditorExportPreset.ScriptExportMode
| Значение | Описание |
|---|---|
BinaryTokens = 1 | |
BinaryTokensCompressed = 2 | |
Text = 0 |