EditorImportPlugin

Наследует: ResourceImporter < RefCounted < Object

Регистрирует пользовательский импортер ресурсов в редакторе. Используйте класс для разбора любого файла и импорта его как нового типа ресурса.

Описание

EditorImportPlugin-ы предоставляют способ расширить функциональность импорта ресурсов редактора. Используйте их для импорта ресурсов из пользовательских файлов или для предоставления альтернатив существующим импортерам редактора.

EditorImportPlugins работают, связываясь с определенными расширениями файлов и типом ресурса. См. _get_recognized_extensions() и _get_resource_type(). Они могут опционально указывать некоторые предустановки импорта, которые влияют на процесс импорта. EditorImportPlugins отвечают за создание ресурсов и сохранение их в каталоге .godot/imported (см. ProjectSettings.application/config/use_hidden_project_data_directory).

Ниже приведен пример EditorImportPlugin, который импортирует Mesh из файла с расширением ".special" или ".spec":

@tool
extends EditorImportPlugin

func _get_importer_name():
    return "my.special.plugin"

func _get_visible_name():
    return "Special Mesh"

func _get_recognized_extensions():
    return ["special", "spec"]

func _get_save_extension():
    return "mesh"

func _get_resource_type():
    return "Mesh"

func _get_preset_count():
    return 1

func _get_preset_name(preset_index):
    return "Default"

func _get_import_options(path, preset_index):
    return [{"name": "my_option", "default_value": false}]

func _import(source_file, save_path, options, platform_variants, gen_files):
    var file = FileAccess.open(source_file, FileAccess.READ)
    if file == null:
        return FAILED
    var mesh = ArrayMesh.new()
    # Заполните сетку данными, считанными из «файла», оставленного в качестве упражнения для читателя.

    var filename = save_path + "." + _get_save_extension()
    return ResourceSaver.save(mesh, filename)

Чтобы использовать EditorImportPlugin, сначала зарегистрируйте его с помощью метода EditorPlugin.add_import_plugin().

Обучающие материалы

Методы

bool

_can_import_threaded() virtual const

int

_get_format_version() virtual const

Array[Dictionary]

_get_import_options(path: String, preset_index: int) virtual required const

int

_get_import_order() virtual const

String

_get_importer_name() virtual required const

bool

_get_option_visibility(path: String, option_name: StringName, options: Dictionary) virtual const

int

_get_preset_count() virtual const

String

_get_preset_name(preset_index: int) virtual required const

float

_get_priority() virtual const

PackedStringArray

_get_recognized_extensions() virtual required const

String

_get_resource_type() virtual required const

String

_get_save_extension() virtual required const

String

_get_visible_name() virtual required const

Error

_import(source_file: String, save_path: String, options: Dictionary, platform_variants: Array[String], gen_files: Array[String]) virtual required const

Error

append_import_external_resource(path: String, custom_options: Dictionary = {}, custom_importer: String = "", generator_parameters: Variant = null)


Описания метода

bool _can_import_threaded() virtual const 🔗

Указывает, может ли этот импортер выполняться параллельно в потоках, или, наоборот, редактору безопасно вызывать его только из основного потока, для одного файла за раз.

Если реализация этого импортера потокобезопасна и может выполняться параллельно, переопределите это значение на true, чтобы оптимизировать параллельное выполнение.

Если не переопределено, возвращает false.


int _get_format_version() virtual const 🔗

Получает версию формата этого импортера. Увеличивайте эту версию при внесении несовместимых изменений в формат импортируемых ресурсов.

Если не переопределено, версия формата равна 0.


Array[Dictionary] _get_import_options(path: String, preset_index: int) virtual required const 🔗

Получает параметры и значения по умолчанию для предустановки по этому индексу. Возвращает массив словарей со следующими ключами: name, default_value, property_hint (необязательно), hint_string (необязательно), usage (необязательно).


int _get_import_order() virtual const 🔗

Получает порядок этого импортера, который будет запущен при импорте ресурсов. Импортеры с более низким порядком импорта будут вызваны первыми, а более высокие значения будут вызваны позже. Используйте это, чтобы гарантировать запуск импортера после того, как зависимости уже импортированы. Порядок импорта по умолчанию — 0, если он не переопределен определенным импортером. См. ImportOrder для некоторых предопределенных значений.


String _get_importer_name() virtual required const 🔗

Получает уникальное имя импортера.


bool _get_option_visibility(path: String, option_name: StringName, options: Dictionary) virtual const 🔗

Определяет, должен ли параметр импорта, заданный параметром option_name, быть видимым в панели импорта. Реализация по умолчанию всегда возвращает true, делая все параметры видимыми. Это в основном полезно для скрытия параметров, зависящих от других, если один из них отключен.

func _get_option_visibility(path, option_name, options):
    # Показывать настройку качества с потерями только в том случае, если режим сжатия установлен на "Lossy".
    if option_name == "compress/lossy_quality" and options.has("compress/mode"):
        return int(options["compress/mode"]) == COMPRESS_LOSSY # Это константа, которую вы устанавливаете

    return true

int _get_preset_count() virtual const 🔗

Получает количество начальных предустановок, определенных плагином. Используйте _get_import_options(), чтобы получить параметры по умолчанию для предустановки, и _get_preset_name(), чтобы получить имя предустановки.

По умолчанию предустановок нет.


String _get_preset_name(preset_index: int) virtual required const 🔗

Получает имя предустановленных параметров по данному индексу.


float _get_priority() virtual const 🔗

Получает приоритет этого плагина для распознанного расширения. Плагины с более высоким приоритетом будут иметь приоритет. Приоритет по умолчанию — 1.0.


PackedStringArray _get_recognized_extensions() virtual required const 🔗

Получает список расширений файлов, которые необходимо связать с этим загрузчиком (без учета регистра). Например, ["obj"].


String _get_resource_type() virtual required const 🔗

Получает тип ресурса Godot, связанный с этим загрузчиком. Например, "Mesh" или "Animation".


String _get_save_extension() virtual required const 🔗

Получает расширение, используемое для сохранения этого ресурса в каталоге .godot/imported (см. ProjectSettings.application/config/use_hidden_project_data_directory).


String _get_visible_name() virtual required const 🔗

Получает имя для отображения в окне импорта. Вы должны выбрать это имя как продолжение "Импортировать как", например, "Импортировать как специальную сетку".


Error _import(source_file: String, save_path: String, options: Dictionary, platform_variants: Array[String], gen_files: Array[String]) virtual required const 🔗

Импортирует source_file с указанным импортом options. Должен возвращать @GlobalScope.OK, если импорт выполнен успешно, другие значения указывают на сбой.

Импортированный ресурс должен быть сохранен в save_path + "." + _get_save_extension(). Если для тега feature предпочтителен другой вариант, сохраните вариант в save_path + "." + tag + "." + _get_save_extension() и добавьте тег feature в platform_variants.

Если в файловой системе ресурсов (res://) генерируются дополнительные файлы ресурсов, добавьте их полный путь в gen_files, чтобы редактор знал, что они зависят от source_file.

Этот метод необходимо переопределить для выполнения фактической работы по импорту. Пример переопределения этого метода см. в описании этого класса.


Error append_import_external_resource(path: String, custom_options: Dictionary = {}, custom_importer: String = "", generator_parameters: Variant = null) 🔗

Эту функцию можно вызвать только во время обратного вызова _import(), и она позволяет вручную импортировать из нее ресурсы. Это полезно, когда импортируемый файл генерирует внешние ресурсы, требующие импорта (например, изображения). Пользовательские параметры для файла ".import" можно передать через custom_options. Кроме того, в случаях, когда несколько импортеров могут обрабатывать файл, можно указать custom_importer, чтобы принудительно выбрать определенный. Эта функция выполняет импорт ресурсов и немедленно возвращает код успеха или ошибки. generator_parameters определяет необязательные дополнительные метаданные, которые будут сохранены как generator_parameters в разделе remap файла .import, например, для хранения хэша md5 исходных данных.