Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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 required const |
|
_get_import_order() virtual const |
|
String |
_get_importer_name() virtual required const |
_get_option_visibility(path: String, option_name: StringName, options: Dictionary) virtual const |
|
_get_preset_count() virtual const |
|
String |
_get_preset_name(preset_index: int) virtual required const |
_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 |
_import(source_file: String, save_path: String, options: Dictionary, platform_variants: Array[String], gen_files: Array[String]) virtual required const |
|
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 🔗
При імпорті ресурсів запрошують замовлення цього імпортера. Імпортери з * lower* імпортні замовлення будуть називатися першими, а більш високі значення будуть називатися пізніше. Використовуйте це, щоб забезпечити імпортер, який вже імпортується. Замовлення імпорту за замовчуванням 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):
# Показувати налаштування якості з втратами, лише якщо режим стиснення встановлено на "З втратами".
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 required const 🔗
Одержує ім'я параметрів, встановлених в цьому індексі.
float _get_priority() virtual const 🔗
Прийміть пріоритет цього плагіна для визнаного розширення. Найвищі пріоритетні плагіни будуть кращими. 1.0.
PackedStringArray _get_recognized_extensions() virtual required const 🔗
Отримати список розширень файлів, пов'язаних з цим навантажувачем (результатом). ["obj"].
String _get_resource_type() virtual required const 🔗
Gets the Godot ресурсний тип, пов'язаний з цим навантажувачем. e.g. "Маш"" або "Animation".
String _get_save_extension() virtual required const 🔗
Збережіть цей ресурс у каталозі .godot/imported (див. члени ПроектуНалаштування.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 із зазначеним параметром 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 вихідних даних.