EditorImportPlugin
Импортирует собственные исходные форматы в ресурсы редактора.
Унаследуйте EditorImportPlugin и зарегистрируйте экземпляр через EditorPlugin.AddImportPlugin(). Задайте постоянный идентификатор, расширения исходников, класс и расширение результата. _Import() проверяет исходник, создаёт ресурс и сохраняет его по переданному savePath с нужным расширением. Возвращайте настоящий код ошибки чтения, преобразования или сохранения.
Редактор хранит настройки рядом с исходником в .import, а сгенерированные данные — в кэше проекта. Загружайте ресурс по исходному пути, не по жёстко заданному имени кэша. При выключении плагина вызовите RemoveImportPlugin() с тем же экземпляром и освободите собственную ссылку.
Полный C#-пример и повторный импорт.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
EditorImportPluginКонструктор
public EditorImportPlugin();Методы15
AppendImportExternalResourceError
public Error AppendImportExternalResource(string path, Reckfell.Collections.Dictionary customOptions = null, string customImporter = "", Variant generatorParameters = default);Синхронно импортирует дополнительный внешний ресурс во время текущего процесса импорта. Вызывайте из _Import(), например для созданного изображения, которому нужен собственный импортёр. Вызов вне процесса импорта отклоняется; это не замена обычному ReimportFiles().
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
customOptions | Reckfell.Collections.Dictionary | null |
customImporter | string | "" |
generatorParameters | Variant | default |
pathПуть дополнительного исходного ресурса.
customOptionsПереопределения настроек импорта; по умолчанию пустой словарь.
customImporterПостоянный идентификатор нужного импортёра или пустая строка для обычного выбора.
generatorParametersДополнительные метаданные, сохраняемые как generator_parameters в секции remap файла .import.
ErrorКод результата вложенного импорта.
_CanImportThreadedbool
public virtual bool _CanImportThreaded();Разрешает запуск импортёра в параллельных потоках. По умолчанию false. Возвращайте true только при потокобезопасности обработчика и его зависимостей; не обращайтесь к дереву редактора из рабочих потоков.
booltrue для потокобезопасного параллельного импорта; иначе false.
_GetFormatVersionint
public virtual int _GetFormatVersion();Верните версию формата генерируемых данных этого импортёра; по умолчанию 0. Увеличивайте её при несовместимых изменениях результата. Это не версия движка и не видимое имя плагина.
intЦелочисленная версия формата импортёра.
_GetImportOptionsReckfell.Collections.Array<Reckfell.Collections.Dictionary>
public virtual Reckfell.Collections.Array<Reckfell.Collections.Dictionary> _GetImportOptions(string path, int presetIndex);Верните настройки пресета как массив словарей. Для каждого обязательны name и default_value. Необязательны property_hint, hint_string и usage. Тип default_value задаёт тип свойства; подсказка диапазона не заменяет проверку данных в _Import().
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
presetIndex | int | — |
pathПуть исходного файла, для которого запрашиваются настройки.
presetIndexИндекс набора начальных значений; метод вызывается и без объявленных пресетов.
Reckfell.Collections.Array<Reckfell.Collections.Dictionary>Массив словарей настроек; при отсутствии настроек — пустой массив.
_GetImportOrderint
public virtual int _GetImportOrder();Задаёт порядок выполнения импортёров: меньшие значения выполняются раньше. По умолчанию 0. Используйте для порядка зависимостей, а не для выбора между импортёрами одного расширения.
intЧисловой порядок импорта.
_GetImporterNamestring
public virtual string _GetImporterName();Верните уникальный постоянный идентификатор импортёра. Он сохраняется в .import и используется для повторного импорта; видимую надпись задаёт _GetVisibleName().
stringИдентификатор, например reckfell.docs.rgb_material.
_GetOptionVisibilitybool
public virtual bool _GetOptionVisibility(string path, StringName optionName, Reckfell.Collections.Dictionary options);Определяет видимость настройки в панели Import на основании текущих значений options. По умолчанию все настройки видимы. Скрытие поля не удаляет его значение и не заменяет проверку в _Import().
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
optionName | StringName | — |
options | Reckfell.Collections.Dictionary | — |
pathПуть исходного файла.
optionNameИмя проверяемой настройки, совпадающее с её ключом name.
optionsТекущие значения настроек импорта.
booltrue, чтобы показать настройку; false, чтобы скрыть.
_GetPresetCountint
public virtual int _GetPresetCount();Верните число начальных наборов настроек. По умолчанию пресетов нет (0); _GetImportOptions() всё равно должен возвращать корректный массив.
intКоличество пресетов.
_GetPresetNamestring
public virtual string _GetPresetName(int presetIndex);Верните читаемое имя пресета по индексу, объявленному через _GetPresetCount().
| Имя | Тип | По умолчанию |
|---|---|---|
presetIndex | int | — |
presetIndexИндекс пресета от 0 до _GetPresetCount() - 1.
stringИмя выбранного пресета.
_GetPriorityfloat
public virtual float _GetPriority();Задаёт предпочтение при автоматическом выборе импортёра исходного расширения. Более высокое значение имеет преимущество; по умолчанию 1.0. Уже записанный в .import идентификатор и явный выбор файла также учитываются системой импорта.
floatЧисловой приоритет импортёра.
_GetRecognizedExtensionsstring[]
public virtual string[] _GetRecognizedExtensions();Верните расширения исходных файлов без точки. Сопоставление не учитывает регистр. Предпочитайте собственное расширение, чтобы не перехватить обычные файлы проекта.
string[]Массив расширений, например ["rfcolor"].
_GetResourceTypestring
public virtual string _GetResourceType();Верните имя класса импортированного ресурса, например StandardMaterial3D. Это класс результата, а не расширение исходного файла.
stringИмя типа ресурса Reckfell.
_GetSaveExtensionstring
public virtual string _GetSaveExtension();Верните расширение генерируемого основного ресурса без точки. При обычном импорте _Import() должен сохранить ресурс по savePath + "." + это расширение.
stringРасширение результата, например material.
_GetVisibleNamestring
public virtual string _GetVisibleName();Верните читаемую надпись для выбора импортёра в панели Import. Изменение надписи не требует менять постоянный идентификатор.
stringОтображаемое имя импортёра.
_ImportError
public virtual Error _Import(string sourceFile, string savePath, Reckfell.Collections.Dictionary options, Reckfell.Collections.Array<string> platformVariants, Reckfell.Collections.Array<string> genFiles);Преобразуйте исходный файл и сохраните основной ресурс по savePath + "." + _GetSaveExtension(). Проверяйте входные данные и возвращайте ошибку чтения, преобразования или сохранения. Массивы platformVariants и genFiles заполняются только для реально созданных вариантов и дополнительных файлов.
| Имя | Тип | По умолчанию |
|---|---|---|
sourceFile | string | — |
savePath | string | — |
options | Reckfell.Collections.Dictionary | — |
platformVariants | Reckfell.Collections.Array<string> | — |
genFiles | Reckfell.Collections.Array<string> | — |
sourceFileПуть исходного файла в проекте.
savePathБазовый путь результата от редактора без расширения. Не подменяйте его жёстко заданным путём кэша.
optionsЗначения настроек импорта; не полагайтесь на UI как на единственную проверку типов и диапазонов.
platformVariantsВыходной массив feature tags для сохранённых вариантов savePath + "." + tag + "." + расширение. Оставьте пустым, если вариантов нет.
genFilesВыходной массив полных asset://-путей дополнительных сгенерированных зависимостей. Не перечисляйте здесь основной результат без необходимости.
ErrorError.Ok только после успешного импорта и сохранения; иначе код ошибки.