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 ERROR
var mesh = ArrayMesh.new()
# Заповніть Mesh даними, зчитаними у "файлі", залишеними як вправа для читача.
var filename = save_path + "." + _get_save_extension()
return ResourceSaver.save(mesh, name file)
Using Godot;
public partial class MySpecialPlugin : EditorImportPlugin
{
public override string _GetImporterName()
{
return "my.special.plugin";
}
public override string _GetVisibleName()
{
return «Special mesh»;
}
public override string[] _GetRecognizedExtensions()
{
return ["special", "spec"];
}
public override string _GetSaveExtension()
{
return "mesh";
}
public override string _GetResourceType()
{
return «mesh»;
}
public override int _GetPresetCount()
{
return 1;
}
public override string _GetPresetName(int presetIndex)
{
return "Default";
}
public override Godot.Collections.Array<Godot.Collections.Dictionary> _GetImportOptions(String path, int presetIndex)
{
return
[
new Godot.Collections.Dictionary
{
{ "name", "myOption" },
{ "default_value", false },
},
];
}
public override Error _Import(string sourceFile, string savePath, Godot.Collections.Dictionary options, Godot.Collections.Array<string> platformVariants, Godot.Collections.Array<string> genFiles)
{
Using var file = FileAccess.Open(sourceFile, FileAccess.ModeFlags.Read);
if (file.GetError() != Error.Ok)
{
return Error.Failed;
}
var mesh = new ArrayMesh();
// Заповнити Mesh даними, зчитаними у "файлі", залишеними як вправа для читача.
string filename = $"{savePath}.{_GetSaveExtension()}";
return ResourceSaver.Save(mesh, filename);
}
}
Щоб використовувати EditorImportPlugin, спочатку зареєструйте його за допомогою методу EditorPlugin.add_import_plugin().
Посібники
Методи
_can_import_threaded() virtual const |
|
_get_format_version() virtual const |
|
_get_import_options(path: String, preset_index: int) virtual const |
|
_get_import_order() virtual const |
|
_get_importer_name() virtual const |
|
_get_option_visibility(path: String, option_name: StringName, options: Dictionary) virtual const |
|
_get_preset_count() virtual const |
|
_get_preset_name(preset_index: int) virtual const |
|
_get_priority() virtual const |
|
_get_recognized_extensions() virtual const |
|
_get_resource_type() virtual const |
|
_get_save_extension() virtual const |
|
_get_visible_name() virtual const |
|
_import(source_file: String, save_path: String, options: Dictionary, platform_variants: Array[String], gen_files: Array[String]) virtual const |
|
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 🔗
При імпорті ресурсів запрошують замовлення цього імпортера. Імпортери з * lower* імпортні замовлення будуть називатися першими, а більш високі значення будуть називатися пізніше. Використовуйте це, щоб забезпечити імпортер, який вже імпортується. Замовлення імпорту за замовчуванням 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):
# Показувати налаштування якості з втратами, лише якщо режим стиснення встановлено на "З втратами".
if option_name == "compress/lossy_quality" and options.has("compress/mode"):
return int(options["compress/mode"]) == COMPRESS_LOSSY # Це константа, яку ви встановлюєте
return true
public override bool _GetOptionVisibility(string path, StringName optionName, Godot.Collections.Dictionary options)
{
// Показувати налаштування якості з втратами лише тоді, коли режим стиснення встановлено на "З втратами".
if (optionName == "compress/lossy_quality" && options.ContainsKey("compress/mode"))
{
return (int)options["compress/mode"] == CompressLossy; // Це константа, яку ви встановлюєте
}
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 🔗
Gets the Godot ресурсний тип, пов'язаний з цим навантажувачем. e.g. "Маш"" або "Animation".
String _get_save_extension() virtual const 🔗
Збережіть цей ресурс у каталозі .godot/imported (див. члени ПроектуНалаштування.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 із зазначеним параметром import options. Якщо імпорт успішний, має повертати @GlobalScope.OK, інші значення вказують на невдачу.
Очікується, що імпортований ресурс буде збережено в save_path + "." + _get_save_extension(). Якщо для тегу feature [url=$DOCS_URL/tutorials/export/feature_tags.html]бажано інший варіант, збережіть варіант в [code]save_path + "." + tag + "." + _get_save_extension()[/code] та додайте тег feature до [param platform_variants].
Якщо у файловій системі ресурсів ([code]res://[/code]) генеруються додаткові файли ресурсів, додайте їхній повний шлях до [param gen_files], щоб редактор знав, що вони залежать від [param 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 вихідних даних.