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 const

int

_get_import_order() virtual const

String

_get_importer_name() virtual 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 const

float

_get_priority() virtual const

PackedStringArray

_get_recognized_extensions() virtual const

String

_get_resource_type() virtual const

String

_get_save_extension() virtual const

String

_get_visible_name() virtual const

Error

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

Error

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


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

bool _can_import_threaded() virtual const 🔗

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

Если этот метод не переопределен, он по умолчанию вернет false.

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


int _get_format_version() virtual const 🔗

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


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

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


int _get_import_order() virtual const 🔗

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


String _get_importer_name() virtual 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 const 🔗

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


float _get_priority() virtual const 🔗

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


PackedStringArray _get_recognized_extensions() virtual const 🔗

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


String _get_resource_type() virtual const 🔗

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


String _get_save_extension() virtual const 🔗

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


String _get_visible_name() virtual const 🔗

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


Error _import(source_file: String, save_path: String, options: Dictionary, platform_variants: Array[String], gen_files: Array[String]) virtual 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 исходных данных.