EditorPlugin
Используется редактором для расширения его функциональности.
Используется редактором для расширения его функциональности.
Плагины используются редактором для расширения функциональности. Наиболее распространенными типами плагинов являются те, которые редактируют заданный узел или тип ресурса, импортируют плагины и экспортируют плагины. См. также EditorScript, чтобы добавить функции в редактор.
Примечание: Некоторые имена в этом классе содержат «left» или «right» (например, EditorPlugin.DockSlot.LeftUl). Эти API предполагают расположение слева направо и будут обратными при использовании расположения справа налево. Эти имена сохранены из соображений совместимости.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
EditorPluginКонструктор
public EditorPlugin();Методы78
AddAutoloadSingletonvoid
public void AddAutoloadSingleton(string name, string path);Добавляет скрипт по адресу path в список автозагрузки как name.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
path | string | — |
AddContextMenuPluginvoid
public void AddContextMenuPlugin(EditorContextMenuPlugin.ContextMenuSlot slot, EditorContextMenuPlugin plugin);Добавляет плагин в контекстное меню. slot — контекстное меню, в которое будет добавлен плагин.
Примечание: Экземпляр плагина может принадлежать только одному слоту контекстного меню.
| Имя | Тип | По умолчанию |
|---|---|---|
slot | EditorContextMenuPlugin.ContextMenuSlot | — |
plugin | EditorContextMenuPlugin | — |
AddControlToBottomPanel2 перегрузки · Есть устаревшие
public Button AddControlToBottomPanel(Control control, string title);Добавить контроль к нижней панели (вместе с выходом, Дебагом, AnimationВозвращает ссылку на кнопку, которая находится вне дерева сцены. При необходимости вы должны спрятать/показывать кнопку. Когда ваш штепсель отключен, убедитесь, что снимите свой заказ. EditorPlugin.RemoveControlFromBottomPanel и освободить его с Entity.QueueFree.
shortcut , это короткий путь, который при активации сжимает видимость нижней панели. Объект кратчайшего обзора установлен только тогда, когда этот орган управления добавлен в нижнюю панель.
Примечание: Смотрите нижние панели редактора в параметрах редактора для вдохновения. [Кбд[Модификатор.
| Имя | Тип | По умолчанию |
|---|---|---|
control | Control | — |
title | string | — |
Buttonpublic Button AddControlToBottomPanel(Control control, string title, Shortcut shortcut = null);Добавить контроль к нижней панели (вместе с выходом, Дебагом, AnimationВозвращает ссылку на кнопку, которая находится вне дерева сцены. При необходимости вы должны спрятать/показывать кнопку. Когда ваш штепсель отключен, убедитесь, что снимите свой заказ. EditorPlugin.RemoveControlFromBottomPanel и освободить его с Entity.QueueFree.
shortcut , это короткий путь, который при активации сжимает видимость нижней панели. Объект кратчайшего обзора установлен только тогда, когда этот орган управления добавлен в нижнюю панель.
Примечание: Смотрите нижние панели редактора в параметрах редактора для вдохновения. [Кбд[Модификатор.
| Имя | Тип | По умолчанию |
|---|---|---|
control | Control | — |
title | string | — |
shortcut | Shortcut | null |
ButtonAddControlToContainervoid
public void AddControlToContainer(EditorPlugin.CustomControlContainer container, Control control);Добавляет пользовательский элемент управления в контейнер в пользовательском интерфейсе редактора.
Помните, что вам придется самостоятельно управлять видимостью ваших пользовательских элементов управления (и, скорее всего, скрывать их после добавления).
Когда ваш плагин деактивирован, обязательно удалите пользовательский элемент управления с помощью EditorPlugin.RemoveControlFromContainer и освободите его с помощью Entity.QueueFree.
| Имя | Тип | По умолчанию |
|---|---|---|
container | EditorPlugin.CustomControlContainer | — |
control | Control | — |
AddControlToDock2 перегрузки · Есть устаревшие
public void AddControlToDock(EditorPlugin.DockSlot slot, Control control);Добавляет элемент управления в определенный слот дока.
Если док перемещен и пока плагин активен, редактор сохранит позицию дока в последующих сеансах.
Когда ваш плагин деактивирован, обязательно удалите свой пользовательский элемент управления с помощью EditorPlugin.RemoveControlFromDocks и освободите его с помощью Entity.QueueFree.
При желании вы можете указать параметр сочетания клавиш. При нажатии сочетания клавиш откроет и сфокусирует док.
| Имя | Тип | По умолчанию |
|---|---|---|
slot | EditorPlugin.DockSlot | — |
control | Control | — |
public void AddControlToDock(EditorPlugin.DockSlot slot, Control control, Shortcut shortcut = null);Добавляет элемент управления в определенный слот дока.
Если док перемещен и пока плагин активен, редактор сохранит позицию дока в последующих сеансах.
Когда ваш плагин деактивирован, обязательно удалите свой пользовательский элемент управления с помощью EditorPlugin.RemoveControlFromDocks и освободите его с помощью Entity.QueueFree.
При желании вы можете указать параметр сочетания клавиш. При нажатии сочетания клавиш откроет и сфокусирует док.
| Имя | Тип | По умолчанию |
|---|---|---|
slot | EditorPlugin.DockSlot | — |
control | Control | — |
shortcut | Shortcut | null |
AddCustomTypevoid
public void AddCustomType(string type, string @base, Script script, Texture2D icon);Добавляет пользовательский тип, который появится в списке узлов или ресурсов.
Когда выбран заданный узел или ресурс, будет создан экземпляр базового типа (например, "Entity3D", "Control", "Resource"), затем скрипт будет загружен и установлен для этого объекта.
Примечание: Базовый тип — это базовый класс движка, который наследует иерархия классов этого типа, а не родительские классы пользовательских типов.
Вы можете использовать виртуальный метод EditorPlugin._Handles, чтобы проверить, редактируется ли ваш пользовательский объект, проверив скрипт или используя ключевое слово is.
Во время выполнения это будет простой объект со скриптом, поэтому эту функцию не нужно вызывать.
Примечание: Пользовательские типы, добавленные таким образом, не являются настоящими классами. Они являются просто вспомогательными для создания узла с определенным скриптом.
| Имя | Тип | По умолчанию |
|---|---|---|
type | string | — |
base | string | — |
script | Script | — |
icon | Texture2D | — |
AddDebuggerPluginvoid
public void AddDebuggerPlugin(EditorDebuggerPlugin script);Добавляет Script как плагин отладчика к Debugger. Скрипт должен расширять EditorDebuggerPlugin.
| Имя | Тип | По умолчанию |
|---|---|---|
script | EditorDebuggerPlugin | — |
AddDockvoid
public void AddDock(EditorDock dock);Регистрирует собственный EditorDock в менеджере панелей редактора. Задайте Title и DefaultSlot до вызова; повторная регистрация того же объекта отклоняется. Для отключения нужны RemoveDock и освобождение своей панели.
| Имя | Тип | По умолчанию |
|---|---|---|
dock | EditorDock | — |
dockСозданная панель EditorDock. Для главного рабочего пространства пример использует DefaultSlot=MainScreen.
AddEntity3DGizmoPluginvoid
public void AddEntity3DGizmoPlugin(EditorEntity3DGizmoPlugin plugin);Регистрирует обработчик 3D-гизмо. Сохраните экземпляр для снятия регистрации. В 1.0.0 добавление не гарантирует пересоздание гизмо уже открытой сцены; сохраните и переоткройте её при необходимости.
| Имя | Тип | По умолчанию |
|---|---|---|
plugin | EditorEntity3DGizmoPlugin | — |
pluginЭкземпляр EditorEntity3DGizmoPlugin.
AddExportPlatformvoid
public void AddExportPlatform(EditorExportPlatform platform);Регистрирует новый EditorExportPlatform. Экспорт платформ обеспечивает функциональность экспорта на определенную платформу.
| Имя | Тип | По умолчанию |
|---|---|---|
platform | EditorExportPlatform | — |
AddExportPluginvoid
public void AddExportPlugin(EditorExportPlugin plugin);Регистрирует новый EditorExportPlugin. Плагины экспорта используются для выполнения задач при экспорте проекта.
См. EditorPlugin.AddInspectorPlugin для примера регистрации плагина.
| Имя | Тип | По умолчанию |
|---|---|---|
plugin | EditorExportPlugin | — |
AddImportPluginvoid
public void AddImportPlugin(EditorImportPlugin importer, bool firstPriority = false);Регистрирует импортёр ресурсов редактора. Сохраните ссылку, чтобы снять регистрацию при выключении плагина. После первого сканирования регистрация планирует новое сканирование отложенным вызовом.
| Имя | Тип | По умолчанию |
|---|---|---|
importer | EditorImportPlugin | — |
firstPriority | bool | false |
importerЭкземпляр пользовательского EditorImportPlugin.
firstPriorityВставить импортёр в начало списка регистрации. Численный _GetPriority() всё равно участвует в выборе; по умолчанию false.
AddInspectorPluginvoid
public void AddInspectorPlugin(EditorInspectorPlugin plugin);Регистрирует ref-counted Inspector-плагин. Для уже открытого объекта может потребоваться повторный разбор/перевыбор: регистрация сама не перестраивает все существующие поля.
| Имя | Тип | По умолчанию |
|---|---|---|
plugin | EditorInspectorPlugin | — |
pluginЭкземпляр EditorInspectorPlugin, который затем снимается тем же объектом через RemoveInspectorPlugin.
AddResourceConversionPluginvoid
public void AddResourceConversionPlugin(EditorResourceConversionPlugin plugin);Новые регистры EditorResourceConversionPlugin. Resource Преобразования используются для добавления заказных преобразователей ресурсов в инспектора редактора.
Смотрите. EditorResourceConversionPlugin для примера того, как создать преобразователь ресурсов.
| Имя | Тип | По умолчанию |
|---|---|---|
plugin | EditorResourceConversionPlugin | — |
AddSceneFormatImporterPluginvoid
public void AddSceneFormatImporterPlugin(EditorSceneFormatImporter sceneFormatImporter, bool firstPriority = false);Регистрирует новый EditorSceneFormatImporter. Импортеры сцен используются для импорта пользовательских форматов 3D-ресурсов в качестве сцен.
Если first_priority равен true, новый плагин импорта вставляется первым в списке и имеет приоритет над уже существующими плагинами.
| Имя | Тип | По умолчанию |
|---|---|---|
sceneFormatImporter | EditorSceneFormatImporter | — |
firstPriority | bool | false |
AddScenePostImportPluginvoid
public void AddScenePostImportPlugin(EditorScenePostImportPlugin sceneImportPlugin, bool firstPriority = false);Добавьте EditorScenePostImportPlugin. Эти плагины позволяют настраивать процесс импорта 3D-ресурсов, добавляя новые параметры в диалоговые окна импорта.
Если first_priority равен true, новый плагин импорта вставляется первым в списке и имеет приоритет над уже существующими плагинами.
| Имя | Тип | По умолчанию |
|---|---|---|
sceneImportPlugin | EditorScenePostImportPlugin | — |
firstPriority | bool | false |
AddToolMenuItemvoid
public void AddToolMenuItem(string name, Callable callable);Добавляет команду в меню инструментов проекта. Зарегистрируйте один раз при входе плагина и удалите при выходе. Повторная регистрация по имени сама по себе не заменяет прежний пункт.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
callable | Callable | — |
nameИмя пункта, которое затем передаётся RemoveToolMenuItem. Выберите достаточно уникальное имя.
callableОбработчик команды, например Callable.From(InspectLevel). В примере он только читает открытую иерархию.
AddToolSubmenuItemvoid
public void AddToolSubmenuItem(string name, PopupMenu submenu);Добавляет пользовательское подменю PopupMenu в Проект > Инструменты > name. Используйте EditorPlugin.RemoveToolMenuItem при очистке плагина, чтобы удалить меню.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
submenu | PopupMenu | — |
AddTranslationParserPluginvoid
public void AddTranslationParserPlugin(EditorTranslationParserPlugin parser);Регистрирует пользовательский плагин анализатора перевода для извлечения переводимых строк из пользовательских файлов.
| Имя | Тип | По умолчанию |
|---|---|---|
parser | EditorTranslationParserPlugin | — |
AddUndoRedoInspectorHookCallbackvoid
public void AddUndoRedoInspectorHookCallback(Callable callable);Подключает обратный вызов к созданию действия отмены/повтора при изменении свойства в инспекторе. Это позволяет, например, сохранять другие свойства, которые могут быть потеряны при изменении данного свойства.
Обратный вызов должен иметь 4 аргумента: ReckfellObject undo_redo, ReckfellObject modified_object, string property и Variant new_value. Это, соответственно, объект UndoRedo, используемый инспектором, текущий измененный объект, имя измененного свойства и новое значение, которое свойство собирается принять.
| Имя | Тип | По умолчанию |
|---|---|---|
callable | Callable | — |
GetEditorInterfaceEditorInterface · Устарело
public EditorInterface GetEditorInterface();Возвращает экземпляр синглтона EditorInterface.
EditorInterfaceGetExportAsMenuPopupMenu
public PopupMenu GetExportAsMenu();Возвращает PopupMenu в разделе Сцена > Экспортировать как....
PopupMenuGetPluginVersionstring
public string GetPluginVersion();Укажите версию плагина, объявленную в файле конфигурации plugin.cfg.
stringGetScriptCreateDialogScriptCreateDialog
public ScriptCreateDialog GetScriptCreateDialog();Получает диалог редактора, используемый для создания скриптов. Примечание: Пользователи могут настроить его перед использованием. Предупреждение: Удаление и освобождение этого узла сделает часть редактора бесполезной и может привести к сбою.
ScriptCreateDialogGetUndoRedoEditorUndoRedoManager
public EditorUndoRedoManager GetUndoRedo();Получает объект отмены/повтора. Большинство действий в редакторе можно отменить, поэтому используйте этот объект, чтобы убедиться, что это произойдет, когда это того стоит.
EditorUndoRedoManagerHideBottomPanelvoid
public void HideBottomPanel();Сворачивает нижнюю панель.
MakeBottomPanelItemVisiblevoid
public void MakeBottomPanelItemVisible(Control item);Делает видимым определенный элемент на нижней панели.
| Имя | Тип | По умолчанию |
|---|---|---|
item | Control | — |
QueueSaveLayoutvoid
public void QueueSaveLayout();Очередь сохранения макета редактора проекта.
RemoveAutoloadSingletonvoid
public void RemoveAutoloadSingleton(string name);Удаляет автозагрузку name из списка.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
RemoveContextMenuPluginvoid
public void RemoveContextMenuPlugin(EditorContextMenuPlugin plugin);Удаляет указанный плагин контекстного меню.
| Имя | Тип | По умолчанию |
|---|---|---|
plugin | EditorContextMenuPlugin | — |
RemoveControlFromBottomPanelvoid · Устарело
public void RemoveControlFromBottomPanel(Control control);Удаляет элемент управления с нижней панели. Вам придется вручную Entity.QueueFree элемент управления.
| Имя | Тип | По умолчанию |
|---|---|---|
control | Control | — |
RemoveControlFromContainervoid
public void RemoveControlFromContainer(EditorPlugin.CustomControlContainer container, Control control);Удаляет элемент управления из указанного контейнера. Вам необходимо вручную Entity.QueueFree элемент управления.
| Имя | Тип | По умолчанию |
|---|---|---|
container | EditorPlugin.CustomControlContainer | — |
control | Control | — |
RemoveControlFromDocksvoid · Устарело
public void RemoveControlFromDocks(Control control);Удаляет элемент управления из дока. Вам придется вручную Entity.QueueFree элемент управления.
| Имя | Тип | По умолчанию |
|---|---|---|
control | Control | — |
RemoveCustomTypevoid
public void RemoveCustomType(string type);Удаляет пользовательский тип, добавленный EditorPlugin.AddCustomType.
| Имя | Тип | По умолчанию |
|---|---|---|
type | string | — |
RemoveDebuggerPluginvoid
public void RemoveDebuggerPlugin(EditorDebuggerPlugin script);Удаляет плагин отладчика с указанным скриптом из отладчика.
| Имя | Тип | По умолчанию |
|---|---|---|
script | EditorDebuggerPlugin | — |
RemoveDockvoid
public void RemoveDock(EditorDock dock);Снимает регистрацию панели и отсоединяет её от менеджера. Сам объект не освобождается: для принадлежащей плагину панели отдельно вызовите QueueFree.
| Имя | Тип | По умолчанию |
|---|---|---|
dock | EditorDock | — |
dockТа же зарегистрированная панель, которую добавил ваш плагин. Не удаляйте панели других расширений.
RemoveEntity3DGizmoPluginvoid
public void RemoveEntity3DGizmoPlugin(EditorEntity3DGizmoPlugin plugin);Снимает регистрацию обработчика. Передайте тот же экземпляр, затем освободите свою ссылку. Не удаляйте пользовательские Entity.
| Имя | Тип | По умолчанию |
|---|---|---|
plugin | EditorEntity3DGizmoPlugin | — |
pluginРанее зарегистрированный обработчик.
RemoveExportPlatformvoid
public void RemoveExportPlatform(EditorExportPlatform platform);Удаляет экспортную платформу, зарегистрированную EditorPlugin.AddExportPlatform.
| Имя | Тип | По умолчанию |
|---|---|---|
platform | EditorExportPlatform | — |
RemoveExportPluginvoid
public void RemoveExportPlugin(EditorExportPlugin plugin);Удаляет плагин экспорта, зарегистрированный EditorPlugin.AddExportPlugin.
| Имя | Тип | По умолчанию |
|---|---|---|
plugin | EditorExportPlugin | — |
RemoveImportPluginvoid
public void RemoveImportPlugin(EditorImportPlugin importer);Снимает регистрацию ранее добавленного импортёра. Затем освободите собственную ссылку; не удаляйте пользовательские исходные файлы. Существующий кэш не заменяет импортёр при необходимости пересоздать результат.
| Имя | Тип | По умолчанию |
|---|---|---|
importer | EditorImportPlugin | — |
importerТот же экземпляр, который был передан в AddImportPlugin().
RemoveInspectorPluginvoid
public void RemoveInspectorPlugin(EditorInspectorPlugin plugin);Снимает регистрацию Inspector-плагина. Не обещает автоматически удалить уже созданные виджеты всех Inspector; пример отдельно перестраивает главный Inspector своего ресурса, затем освобождает свою ref-counted ссылку.
| Имя | Тип | По умолчанию |
|---|---|---|
plugin | EditorInspectorPlugin | — |
pluginТот же зарегистрированный экземпляр. Не применяйте к ref-counted плагину QueueFree, предназначенный для Entity.
RemoveResourceConversionPluginvoid
public void RemoveResourceConversionPlugin(EditorResourceConversionPlugin plugin);Удаляет плагин преобразования ресурсов, зарегистрированный EditorPlugin.AddResourceConversionPlugin.
| Имя | Тип | По умолчанию |
|---|---|---|
plugin | EditorResourceConversionPlugin | — |
RemoveSceneFormatImporterPluginvoid
public void RemoveSceneFormatImporterPlugin(EditorSceneFormatImporter sceneFormatImporter);Удаляет импортер формата сцены, зарегистрированный EditorPlugin.AddSceneFormatImporterPlugin.
| Имя | Тип | По умолчанию |
|---|---|---|
sceneFormatImporter | EditorSceneFormatImporter | — |
RemoveScenePostImportPluginvoid
public void RemoveScenePostImportPlugin(EditorScenePostImportPlugin sceneImportPlugin);Удалите EditorScenePostImportPlugin, добавленный с помощью EditorPlugin.AddScenePostImportPlugin.
| Имя | Тип | По умолчанию |
|---|---|---|
sceneImportPlugin | EditorScenePostImportPlugin | — |
RemoveToolMenuItemvoid
public void RemoveToolMenuItem(string name);Удаляет добавленный инструментальный пункт по имени. Вызывайте при отключении своего плагина, чтобы повторное включение не оставляло старые команды.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
nameТо же имя, переданное AddToolMenuItem.
RemoveTranslationParserPluginvoid
public void RemoveTranslationParserPlugin(EditorTranslationParserPlugin parser);Удаляет пользовательский плагин парсера перевода, зарегистрированный EditorPlugin.AddTranslationParserPlugin.
| Имя | Тип | По умолчанию |
|---|---|---|
parser | EditorTranslationParserPlugin | — |
RemoveUndoRedoInspectorHookCallbackvoid
public void RemoveUndoRedoInspectorHookCallback(Callable callable);Удаляет обратный вызов, ранее добавленный EditorPlugin.AddUndoRedoInspectorHookCallback.
| Имя | Тип | По умолчанию |
|---|---|---|
callable | Callable | — |
SetDockTabIconvoid · Устарело
public void SetDockTabIcon(Control control, Texture2D icon);Устанавливает значок вкладки для указанного элемента управления в слоте дока. Установка null удаляет значок.
| Имя | Тип | По умолчанию |
|---|---|---|
control | Control | — |
icon | Texture2D | — |
SetForceDrawOverForwardingEnabledvoid
public void SetForceDrawOverForwardingEnabled();Позволяет вызывать EditorPlugin._ForwardCanvasForceDrawOverViewport для 2D-редактора и EditorPlugin._Forward3DForceDrawOverViewport для 3D-редактора при обновлении их вьюпортов. Вам нужно вызвать этот метод только один раз, и он будет работать постоянно для этого плагина.
SetInputEventForwardingAlwaysEnabledvoid
public void SetInputEventForwardingAlwaysEnabled();Используйте этот метод, если вы всегда хотите получать входные данные с экрана 3D-вида внутри EditorPlugin._Forward3DGuiInput. Он может быть особенно полезен, если ваш плагин захочет использовать raycast в сцене.
UpdateOverlaysint
public int UpdateOverlays();Обновляет наложения вьюпорта 2D- и 3D-редактора. Вызывает вызов методов EditorPlugin._ForwardCanvasDrawOverViewport, EditorPlugin._ForwardCanvasForceDrawOverViewport, EditorPlugin._Forward3DDrawOverViewport и EditorPlugin._Forward3DForceDrawOverViewport.
int_ApplyChangesvoid
public virtual void _ApplyChanges();Этот метод вызывается, когда редактор собирается сохранить проект, переключиться на другую вкладку и т. д. Он просит плагин применить любые отложенные изменения состояния, чтобы обеспечить согласованность. Это используется, например, в редакторах шейдеров, чтобы дать плагину знать, что он должен применить код шейдера, написанный пользователем, к объекту.
_Buildbool
public virtual bool _Build();Этот метод вызывается, когда редактор собирается запустить проект.
Затем плагин может выполнить требуемые операции перед запуском проекта. Этот метод должен возвращать логическое значение. Если этот метод возвращает false, проект не будет запущен. Запуск немедленно прерывается, поэтому это также предотвращает запуск всех методов EditorPlugin._Build других плагинов.
bool_Clearvoid
public virtual void _Clear();Очистите все состояния и сбросьте редактируемый объект на ноль. Это гарантирует, что ваш плагин не будет продолжать редактировать существующий узел или узел из неправильной сцены.
_DisablePluginvoid
public virtual void _DisablePlugin();Вызывается движком, когда пользователь отключает EditorPlugin на вкладке «Плагин» окна настроек проекта.
_Editvoid
public virtual void _Edit(ReckfellObject @object);Эта функция используется для плагинов, которые редактируют определенные типы объектов (узлы или ресурсы). Она запрашивает редактор для редактирования указанного объекта.
object может быть null, если плагин редактировал объект, но больше нет выбранного объекта, обрабатываемого этим плагином. Его можно использовать для очистки состояния редактирования.
| Имя | Тип | По умолчанию |
|---|---|---|
object | ReckfellObject | — |
_EnablePluginvoid
public virtual void _EnablePlugin();Вызывается движком, когда пользователь включает EditorPlugin на вкладке «Плагин» окна настроек проекта.
_Forward3DDrawOverViewportvoid
public virtual void _Forward3DDrawOverViewport(Control viewportControl);Вызывается движком при обновлении области просмотра 3D-редактора. viewport_control — это наложение поверх области просмотра, которое можно использовать для рисования. Обновить область просмотра можно вручную, вызвав EditorPlugin.UpdateOverlays.
public override void _Forward3DDrawOverViewport(Control viewportControl)
{
// Draw a circle at the cursor's position.
viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, Colors.White);
}
public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D viewportCamera, InputEvent @event)
{
if (@event is InputEventMouseMotion)
{
// Redraw the viewport when the cursor is moved.
UpdateOverlays();
return EditorPlugin.AfterGuiInput.Stop;
}
return EditorPlugin.AfterGuiInput.Pass;
}| Имя | Тип | По умолчанию |
|---|---|---|
viewportControl | Control | — |
_Forward3DForceDrawOverViewportvoid
public virtual void _Forward3DForceDrawOverViewport(Control viewportControl);Этот метод такой же, как EditorPlugin._Forward3DDrawOverViewport, за исключением того, что он рисует поверх всего. Полезно, когда вам нужен дополнительный слой, который отображается поверх всего остального.
Вам нужно включить вызов этого метода с помощью EditorPlugin.SetForceDrawOverForwardingEnabled.
| Имя | Тип | По умолчанию |
|---|---|---|
viewportControl | Control | — |
_Forward3DGuiInputint
public virtual int _Forward3DGuiInput(Camera3D viewportCamera, InputEvent @event);Вызывается, когда в текущей редактируемой сцене есть корневой узел, реализуется EditorPlugin._Handles, и в окне 3D-просмотра происходит InputEvent. Возвращаемое значение определяет, будет ли InputEvent использован или перенаправлен другим EditorPlugin. См. EditorPlugin.AfterGuiInput для опций.
// Prevents the InputEvent from reaching other Editor classes.
public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D camera, InputEvent @event)
{
return EditorPlugin.AfterGuiInput.Stop;
}Этот метод должен возвращать EditorPlugin.AfterGuiInput.Pass для пересылки InputEvent другим классам редактора.
// Consumes InputEventMouseMotion and forwards other InputEvent types.
public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D camera, InputEvent @event)
{
return @event is InputEventMouseMotion ? EditorPlugin.AfterGuiInput.Stop : EditorPlugin.AfterGuiInput.Pass;
}| Имя | Тип | По умолчанию |
|---|---|---|
viewportCamera | Camera3D | — |
event | InputEvent | — |
int_ForwardCanvasDrawOverViewportvoid
public virtual void _ForwardCanvasDrawOverViewport(Control viewportControl);Вызывается движком при обновлении области просмотра 2D-редактора. viewport_control — это наложение поверх области просмотра, которое можно использовать для рисования. Обновить область просмотра можно вручную, вызвав EditorPlugin.UpdateOverlays.
public override void _ForwardCanvasDrawOverViewport(Control viewportControl)
{
// Draw a circle at the cursor's position.
viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, Colors.White);
}
public override bool _ForwardCanvasGuiInput(InputEvent @event)
{
if (@event is InputEventMouseMotion)
{
// Redraw the viewport when the cursor is moved.
UpdateOverlays();
return true;
}
return false;
}| Имя | Тип | По умолчанию |
|---|---|---|
viewportControl | Control | — |
_ForwardCanvasForceDrawOverViewportvoid
public virtual void _ForwardCanvasForceDrawOverViewport(Control viewportControl);Этот метод такой же, как EditorPlugin._ForwardCanvasDrawOverViewport, за исключением того, что он рисует поверх всего. Полезно, когда вам нужен дополнительный слой, который отображается поверх всего остального.
Вам нужно включить вызов этого метода с помощью EditorPlugin.SetForceDrawOverForwardingEnabled.
| Имя | Тип | По умолчанию |
|---|---|---|
viewportControl | Control | — |
_ForwardCanvasGuiInputbool
public virtual bool _ForwardCanvasGuiInput(InputEvent @event);Вызывается, когда в текущей редактируемой сцене есть корневой узел, реализуется EditorPlugin._Handles, и в 2D-окне просмотра происходит InputEvent. Если этот метод возвращает true, event перехватывается этим EditorPlugin, в противном случае event пересылается другим классам Editor.
// Prevents the InputEvent from reaching other Editor classes.
public override bool ForwardCanvasGuiInput(InputEvent @event)
{
return true;
}Этот метод должен возвращать false, чтобы переслать InputEvent другим классам редактора.
// Consumes InputEventMouseMotion and forwards other InputEvent types.
public override bool _ForwardCanvasGuiInput(InputEvent @event)
{
if (@event is InputEventMouseMotion)
{
return true;
}
return false;
}| Имя | Тип | По умолчанию |
|---|---|---|
event | InputEvent | — |
bool_GetBreakpointsstring[]
public virtual string[] _GetBreakpoints();Это для редакторов, которые редактируют объекты на основе сценария. Вы можете вернуть список точек в формате ()script:line), например: asset://path_to_script.cs:25.
#######pugin_icon
string[]_GetPluginIconTexture2D · Устарело
public virtual Texture2D _GetPluginIcon();Переопределите этот метод в вашем плагине, чтобы он возвращал Texture2D и добавлял значок.
Для плагинов, размещаемых на главном экране, значок отображается в верхней части экрана, справа от кнопок «2D», «3D», «Script», «Game» и «Хранение активов».
В идеале значок плагина должен быть белым с прозрачным фоном и размером 16×16 пикселей.
public override Texture2D _GetPluginIcon()
{
// You can use a custom icon:
return ResourceLoader.Load<Texture2D>("asset://addons/my_plugin/my_plugin_icon.svg");
// Or use a built-in icon:
return EditorInterface.Singleton.GetEditorTheme().GetIcon("Entity", "EditorIcons");
}Texture2D_GetPluginNamestring
public virtual string _GetPluginName();Отменить этот метод в вашем модификаторе, чтобы указать имя лейбина, когда он показан в редакторе Reckfell.
В случае главных экранов это появляется в верхней части экрана, справа от "2D", "3D",".Script", "Игра", и кнопки "Ассет Сокровище".
Примечание: Вместо этого следует использовать основные экраны EditorDock.Title главного экранного дока.
string_GetStateReckfell.Collections.Dictionary
public virtual Reckfell.Collections.Dictionary _GetState();Переопределите этот метод, чтобы предоставить данные о состоянии, которые необходимо сохранить, например, положение вида, настройки сетки, сворачивание и т. д. Это используется при сохранении сцены (чтобы состояние сохранялось при её повторном открытии) и для переключения вкладок (чтобы состояние можно было восстановить при возврате вкладки). Эти данные автоматически сохраняются для каждой сцены в файле editstate в папке метаданных редактора. Если вы хотите сохранить глобальные (независимые от сцены) данные редактора для своего плагина, вы можете использовать EditorPlugin._GetWindowLayout.
Используйте EditorPlugin._SetState для восстановления сохранённого состояния.
Примечание: Этот метод не следует использовать для сохранения важных настроек, которые должны сохраняться в проекте.
Примечание: Для корректного сохранения и восстановления состояния необходимо реализовать EditorPlugin._GetPluginName.
####### get_unsaved_ Status
Reckfell.Collections.Dictionary_GetUnsavedStatusstring
public virtual string _GetUnsavedStatus(string forScene);Переопределите этот метод, чтобы предоставить пользовательское сообщение, в котором перечислены несохраненные изменения. Редактор вызовет этот метод при выходе или закрытии сцены и отобразит возвращенную строку в диалоговом окне подтверждения. Возвращает пустую строку, если у плагина нет несохраненных изменений.
При закрытии сцены for_scene — это путь к закрываемой сцене. Вы можете использовать его для обработки встроенных ресурсов в этой сцене.
Если пользователь подтверждает сохранение, перед закрытием редактора будет вызван EditorPlugin._SaveExternalData.
Если плагин не имеет изменений, специфичных для сцены, вы можете игнорировать вызовы при закрытии сцен:
| Имя | Тип | По умолчанию |
|---|---|---|
forScene | string | — |
string_GetWindowLayoutvoid
public virtual void _GetWindowLayout(ConfigFile configuration);Переопределите этот метод, чтобы предоставить макет GUI плагина или любые другие данные, которые вы хотите сохранить. Это используется для сохранения макета редактора проекта при вызове EditorPlugin.QueueSaveLayout или изменении макета редактора (например, при изменении положения дока). Данные сохраняются в файле editor_layout.cfg в каталоге метаданных редактора.
Используйте EditorPlugin._SetWindowLayout, чтобы восстановить сохраненный макет.
| Имя | Тип | По умолчанию |
|---|---|---|
configuration | ConfigFile | — |
_Handlesbool
public virtual bool _Handles(ReckfellObject @object);Включите эту функцию, если вы редактируете конкретный тип объекта ().Resource или Entity) В случае возвращения true, тогда вы получите функции EditorPlugin._Edit и EditorPlugin._MakeVisible Позвонил, когда их запросит редактор. Если вы указали методы EditorPlugin._ForwardCanvasGuiInput и EditorPlugin._Forward3DGuiInput Это тоже будет называться.
Примечание: Каждый штемпель должен одновременно работать только с одним типом объектов. Если штепсель работает с несколькими типами объектов и они отредактируются одновременно, это приведет к ошибкам.
| Имя | Тип | По умолчанию |
|---|---|---|
object | ReckfellObject | — |
bool_HasMainScreenbool · Устарело
public virtual bool _HasMainScreen();Возвращение true если это главный редактор экрана bigin (он проходит в выбранном рабочем пространстве вместе с 2D, 3D, Script, Игра, и Хранение активов).
Вы можете добавить главный экранный док с помощью EditorDock при этом EditorDock.DockLayout.MainScreen в качестве имеющегося формата.
bool_MakeVisiblevoid
public virtual void _MakeVisible(bool visible);Эта функция будет вызвана, когда редактору будет предложено стать видимым. Она используется для плагинов, которые редактируют определенный тип объекта. Помните, что вам придется вручную управлять видимостью всех элементов управления редактора.
| Имя | Тип | По умолчанию |
|---|---|---|
visible | bool | — |
_RunScenestring[]
public virtual string[] _RunScene(string scene, string[] args);Эта функция вызывается, когда в редакторе собирается воспроизвестись отдельная сцена. args — это список аргументов командной строки, которые будут переданы новому экземпляру Reckfell; этот список будет заменен списком, возвращаемым этой функцией.
Примечание: Текст, выводимый этим методом, не будет виден на панели вывода редактора, если параметр EditorSettings.run/output/always_clear_output_on_play не имеет значения false.
####_спасение_внешние_данные
| Имя | Тип | По умолчанию |
|---|---|---|
scene | string | — |
args | string[] | — |
string[]_SaveExternalDatavoid
public virtual void _SaveExternalData();Этот метод вызывается после того, как редактор сохраняет проект или когда он закрыт. Он просит плагин сохранить отредактированные внешние сцены/ресурсы.
_SetStatevoid
public virtual void _SetState(Reckfell.Collections.Dictionary state);Восстановите состояние, сохраненное EditorPlugin._GetState. Этот метод вызывается при изменении текущей вкладки сцены в редакторе.
Примечание: Ваш плагин должен реализовывать EditorPlugin._GetPluginName, иначе он не будет распознан и этот метод не будет вызван.
| Имя | Тип | По умолчанию |
|---|---|---|
state | Reckfell.Collections.Dictionary | — |
_SetWindowLayoutvoid
public virtual void _SetWindowLayout(ConfigFile configuration);Восстановите макет GUI плагина и данные, сохраненные EditorPlugin._GetWindowLayout. Этот метод вызывается для каждого плагина при запуске редактора. Используйте предоставленный файл configuration для чтения сохраненных данных.
| Имя | Тип | По умолчанию |
|---|---|---|
configuration | ConfigFile | — |
Сигналы и события6
MainScreenChangedСобытие
public event EditorPlugin.MainScreenChangedEventHandler MainScreenChanged;Генерируется при изменении пользователем рабочего пространства (2D, 3D, Script, Game, Хранение активов). Также работает с пользовательскими экранами, определенными плагинами.
| Имя | Тип | По умолчанию |
|---|---|---|
screenName | string | — |
ProjectSettingsChangedСобытие · Устарело
public event Action ProjectSettingsChanged;Генерируется при изменении каких-либо настроек проекта.
ResourceSavedСобытие
public event EditorPlugin.ResourceSavedEventHandler ResourceSaved;Выдается, когда заданный resource был сохранен на диске. См. также EditorPlugin.SceneSaved.
| Имя | Тип | По умолчанию |
|---|---|---|
resource | Resource | — |
SceneChangedСобытие
public event EditorPlugin.SceneChangedEventHandler SceneChanged;Выдается при изменении сцены в редакторе. Аргумент вернет корневой узел сцены, которая только что стала активной. Если эта сцена новая и пустая, аргумент будет null.
| Имя | Тип | По умолчанию |
|---|---|---|
sceneRoot | Entity | — |
SceneClosedСобытие
public event EditorPlugin.SceneClosedEventHandler SceneClosed;Вызывается, когда пользователь закрывает сцену. Аргумент — путь к файлу закрытой сцены.
| Имя | Тип | По умолчанию |
|---|---|---|
filepath | string | — |
SceneSavedСобытие
public event EditorPlugin.SceneSavedEventHandler SceneSaved;Выдается при сохранении сцены на диске. Аргумент — путь к файлу сохраненной сцены. См. также EditorPlugin.ResourceSaved.
| Имя | Тип | По умолчанию |
|---|---|---|
filepath | string | — |
EditorPlugin.AfterGuiInput
| Значение | Описание |
|---|---|
Custom = 2 | Передайте |
Pass = 0 | Пересылает |
Stop = 1 | Предотвращает доступ |
EditorPlugin.CustomControlContainer
| Значение | Описание |
|---|---|
CanvasEditorBottom = 8 | Нижняя панель 2D-редактора. |
CanvasEditorMenu = 5 | Панель инструментов, которая появляется при активном 2D-редакторе. |
CanvasEditorSideLeft = 6 | Левая боковая панель 2D-редактора. |
CanvasEditorSideRight = 7 | Правая боковая панель 2D-редактора. |
InspectorBottom = 9 | Нижняя часть инспектора. |
ProjectSettingTabLeft = 10 | Вкладка диалогового окна «Параметры проекта», слева от других вкладок. |
ProjectSettingTabRight = 11 | Вкладка диалогового окна «Параметры проекта», справа от других вкладок. |
SpatialEditorBottom = 4 | Нижняя панель 3D-редактора. |
SpatialEditorMenu = 1 | Панель инструментов, которая появляется при активном 3D-редакторе. |
SpatialEditorSideLeft = 2 | Левая боковая панель 3D-редактора. |
SpatialEditorSideRight = 3 | Правая боковая панель 3D-редактора. |
Toolbar = 0 | Основная панель инструментов редактора, рядом с кнопками воспроизведения. |
EditorPlugin.DockSlot
| Значение | Описание |
|---|---|
Bottom = 8 | Нижняя панель. |
LeftBl = 1 | Слот для док-станции, левая сторона, внизу слева (в макете по умолчанию пуст). |
LeftBr = 3 | Слева, справа от донной части (в по умолчанию включает просмотр контента). |
LeftUl = 0 | Слот для док-станции, левая сторона, вверху слева (в макете по умолчанию пуст). |
LeftUr = 2 | Слот док-станции, левая сторона, вверху справа (в макете по умолчанию включены док-станции «Сцена» и «Импорт»). |
Max = 9 | Представляет размер перечисления |
None = -1 | Док-панель закрыта. |
RightBl = 5 | Слот для док-станции, правая сторона, левый нижний угол (в макете по умолчанию пуст). |
RightBr = 7 | Слот для док-станции, справа, внизу справа (в макете по умолчанию пуст). |
RightUl = 4 | Дробовое сечение, справа, с верхней левой стороны (в модели по умолчанию включает инспектора, Entity, и History доки). |
RightUr = 6 | Слот для док-станции, правая сторона, вверху справа (пустой в макете по умолчанию). |