EditorPlugin¶
编辑器用于扩展其功能。
描述¶
编辑器使用插件来扩展功能。最常见的插件类型是那些编辑给定节点或资源类型、导入插件和导出插件的插件。另请参阅EditorScript以向编辑器添加功能。
注意:此类中的某些名称包含“左”或“右”(例如DOCK_SLOT_LEFT_UL)。这些API采用从左到右的布局,当使用从右到左的布局时会向后。出于兼容性原因,保留这些名称。
方法¶
信号¶
main_screen_changed(screen_name: String) 🔗
当用户更改工作区时发出(** 2D**,3D,Script,AssetLib)。也适用于插件定义的自定义屏幕。
project_settings_changed() 🔗
已弃用: 请改用 ProjectSettings.settings_changed。
当任何项目设置发生更改时发出。
resource_saved(resource: Resource) 🔗
当给定的resource保存在光盘上时发出。另见scene_saved。
scene_changed(scene_root: Item) 🔗
在编辑器中更改场景时发出。参数将返回刚刚激活的场景的根节点。如果此场景为新且为空,则参数将为null。
scene_closed(filepath: String) 🔗
当用户关闭场景时发出。参数是关闭场景的文件路径。
scene_saved(filepath: String) 🔗
当场景保存在光盘上时发出。参数是保存场景的文件路径。另见resource_saved。
枚举¶
enum CustomControlContainer: 🔗
CustomControlContainer CONTAINER_TOOLBAR = 0
主编辑器工具栏,播放按钮旁边。
激活3D编辑器时出现的工具栏。
CustomControlContainer CONTAINER_SPATIAL_EDITOR_SIDE_LEFT = 2
3D编辑器的左侧边栏。
CustomControlContainer CONTAINER_SPATIAL_EDITOR_SIDE_RIGHT = 3
3D编辑器的右侧边栏。
CustomControlContainer CONTAINER_SPATIAL_EDITOR_BOTTOM = 4
3D编辑器的底部面板。
2D编辑器处于活动状态时出现的工具栏。
CustomControlContainer CONTAINER_CANVAS_EDITOR_SIDE_LEFT = 6
2D编辑器的左侧边栏。
CustomControlContainer CONTAINER_CANVAS_EDITOR_SIDE_RIGHT = 7
2D编辑器的右侧边栏。
CustomControlContainer CONTAINER_CANVAS_EDITOR_BOTTOM = 8
2D编辑器的底部面板。
CustomControlContainer CONTAINER_INSPECTOR_BOTTOM = 9
检查器的底部。
CustomControlContainer CONTAINER_PROJECT_SETTING_TAB_LEFT = 10
项目设置对话框的选项卡,在其他选项卡的左侧。
CustomControlContainer CONTAINER_PROJECT_SETTING_TAB_RIGHT = 11
项目设置对话框的选项卡,在其他选项卡的右侧。
enum DockSlot: 🔗
DockSlot DOCK_SLOT_LEFT_UL = 0
停靠槽,左侧,左上角(默认布局为空)。
DockSlot DOCK_SLOT_LEFT_BL = 1
底座插槽,左侧,左下角(默认布局为空)。
DockSlot DOCK_SLOT_LEFT_UR = 2
底座插槽,左侧,右上角(默认布局包括场景和导入底座)。
DockSlot DOCK_SLOT_LEFT_BR = 3
停靠槽,左侧,右下角(默认布局包括FileSystem停靠)。
DockSlot DOCK_SLOT_RIGHT_UL = 4
扩展坞插槽,右侧,左上角(默认布局包括检查器、节点和历史扩展坞)。
DockSlot DOCK_SLOT_RIGHT_BL = 5
底座插槽,右侧,左下角(默认布局为空)。
DockSlot DOCK_SLOT_RIGHT_UR = 6
底座插槽,右侧,右上角(默认布局为空)。
DockSlot DOCK_SLOT_RIGHT_BR = 7
底座插槽,右侧,右下角(默认布局为空)。
DockSlot DOCK_SLOT_MAX = 8
表示DockSlot枚举的大小。
enum AfterGUIInput: 🔗
AfterGUIInput AFTER_GUI_INPUT_PASS = 0
将InputEvent转发到其他EditorPlugins。
AfterGUIInput AFTER_GUI_INPUT_STOP = 1
防止InputEvent到达其他Editor类。
AfterGUIInput AFTER_GUI_INPUT_CUSTOM = 2
将InputEvent传递给除主Item3D之外的其他编辑器插件。这可用于防止节点选择更改并改用子gizmos。
方法说明¶
void _apply_changes() virtual 🔗
当编辑器即将保存项目、切换到另一个选项卡等时调用此方法。它要求插件应用任何挂起的状态更改以确保一致性。
例如,这在着色器编辑器中使用,让插件知道它必须将用户正在编写的着色器代码应用于对象。
当编辑器即将运行项目时调用此方法。然后,插件可以在项目运行之前执行所需的操作。
这个方法必须返回一个布尔值,如果这个方法返回false,项目将不会运行,运行会立即中止,所以这也会阻止所有其他插件的_build()方法运行。
void _clear() virtual 🔗
清除所有状态并将正在编辑的对象重置为零。这可确保您的插件不会一直编辑当前存在的节点或来自错误场景的节点。
void _disable_plugin() virtual 🔗
当用户在项目设置窗口的插件选项卡中禁用EditorPlugin时由引擎调用。
void _edit(object: Object) virtual 🔗
此功能用于编辑特定对象类型(节点或资源)的插件。它请求编辑器编辑给定的对象。
如果插件正在编辑一个对象,但此插件不再处理任何选定的对象,则object可以为null。它可用于清理编辑状态。
void _enable_plugin() virtual 🔗
当用户在项目设置窗口的插件选项卡中启用EditorPlugin时由引擎调用。
void _forward_3d_draw_over_viewport(viewport_control: Control) virtual 🔗
当3D编辑器的视口更新时,引擎会调用此函数。使用overlay Control进行绘制。您可以通过调用update_overlays()手动更新视口。
func _forward_3d_draw_over_viewport(overlay):
# 在光标位置画一个圆圈。
overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE)
func _forward_3d_gui_input(camera, event):
if event is InputEventMouseMotion:
# 当光标移动时重新绘制视口
update_overlays()
return EditorPlugin.AFTER_GUI_INPUT_STOP
return EditorPlugin.AFTER_GUI_INPUT_PASS
public override void _Forward3DDrawOverViewport(Control viewportControl)
{
// 在光标位置画一个圆圈。
viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, Colors.White);
}
public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera viewportCamera, InputEvent @event)
{
if (@event is InputEventMouseMotion)
{
// 当光标移动时重新绘制视口。
UpdateOverlays();
return EditorPlugin.AfterGuiInput.Stop;
}
return EditorPlugin.AfterGuiInput.Pass;
}
void _forward_3d_force_draw_over_viewport(viewport_control: Control) virtual 🔗
此方法与_forward_3d_draw_over_viewport()相同,只是它在所有内容之上绘制。当您需要显示在其他任何内容上的额外图层时很有用。
您需要使用set_force_draw_over_forwarding_enabled()启用此方法的调用。
int _forward_3d_gui_input(viewport_camera: Camera, event: InputEvent) virtual 🔗
当当前编辑的场景中存在根节点时,_handles()被实现,并且在3D视口中发生InputEvent。返回值决定InputEvent是被消耗还是转发给其他EditorPlugin。有关选项,请参阅AfterGUIInput。
# 防止 InputEvent 到达其他编辑器类。
func _forward_3d_gui_input(camera, event):
return EditorPlugin.AFTER_GUI_INPUT_STOP
// 阻止 InputEvent 到达其他编辑器类。
public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera camera, InputEvent @event)
{
return EditorPlugin.AfterGuiInput.Stop;
}
This method must return AFTER_GUI_INPUT_PASS in order to forward the InputEvent to other Editor classes.
# 使用 InputEventMouseMotion 并转发其他 InputEvent 类型。
func _forward_3d_gui_input(camera, event):
return EditorPlugin.AFTER_GUI_INPUT_STOP if event is InputEventMouseMotion else EditorPlugin.AFTER_GUI_INPUT_PASS
// 使用 InputEventMouseMotion 并转发其他 InputEvent 类型。
public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera camera, InputEvent @event)
{
return @event is InputEventMouseMotion ? EditorPlugin.AfterGuiInput.Stop : EditorPlugin.AfterGuiInput.Pass;
}
void _forward_canvas_draw_over_viewport(viewport_control: Control) virtual 🔗
当2D编辑器的视口更新时,引擎会调用此函数。使用overlay Control进行绘制。您可以通过调用update_overlays()手动更新视口。
func _forward_canvas_draw_over_viewport(overlay):
# 在光标位置画一个圆圈。
overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE)
func _forward_canvas_gui_input(event):
if event is InputEventMouseMotion:
# 当光标移动时,edraw 视口。
update_overlays()
return true
return false
public override void _ForwardCanvasDrawOverViewport(Control viewportControl)
{
// 在光标位置画一个圆圈。
viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, Colors.White);
}
public override bool _ForwardCanvasGuiInput(InputEvent @event)
{
if (@event is InputEventMouseMotion)
{
// 当光标移动时重新绘制视口。
UpdateOverlays();
return true;
}
return false;
}
void _forward_canvas_force_draw_over_viewport(viewport_control: Control) virtual 🔗
此方法与_forward_canvas_draw_over_viewport()相同,只是它在所有内容之上绘制。当您需要显示在其他任何内容上的额外图层时很有用。
您需要使用set_force_draw_over_forwarding_enabled()启用此方法的调用。
bool _forward_canvas_gui_input(event: InputEvent) virtual 🔗
当当前编辑的场景中存在根节点时,_handles()被实现,并且在2D视口中发生InputEvent。返回值决定InputEvent是被消耗还是转发给其他EditorPlugin。如果此方法返回true,则event被此EditorPlugin拦截,否则event将被转发给其他编辑器类。
# 防止 InputEvent 到达其他编辑器类。
func _forward_canvas_gui_input(event):
return true
// 防止 InputEvent 到达其他编辑器类。
public override bool ForwardCanvasGuiInput(InputEvent @event)
{
return true;
}
This method must return false in order to forward the InputEvent to other Editor classes.
# 使用 InputEventMouseMotion 并转发其他 InputEvent 类型。
func _forward_canvas_gui_input(event):
if (event is InputEventMouseMotion):
return true
return false
// 使用 InputEventMouseMotion 并转发其他 InputEvent 类型。
public override bool _ForwardCanvasGuiInput(InputEvent @event)
{
if (@event is InputEventMouseMotion)
{
return true;
}
return false;
}
PackedStringArray _get_breakpoints() virtual const 🔗
这适用于编辑基于脚本的对象的编辑器。您可以返回格式为(script: line)的断点列表,例如:res://path_to_script.s3:25。
Texture2D _get_plugin_icon() virtual const 🔗
在您的插件中重写此方法,返回一个Texture2D以给它一个图标。
对于主屏幕插件,该图标会出现在屏幕顶部,位于“2D”、“3D”、“Script”和“AssetLib”按钮的右侧。
理想情况下,插件图标应为白色,背景透明,尺寸为16×16像素。
func _get_plugin_icon():
# 您可以使用自定义图标:
return preload("res://addons/my_plugin/my_plugin_icon.svg")
# 或者使用内置图标:
return EditorInterface.get_editor_theme().get_icon("Item", "EditorIcons")
public override Texture2D _GetPluginIcon()
{
// 您可以使用自定义图标:
return ResourceLoader.Load<Texture2D>("res://addons/my_plugin/my_plugin_icon.svg");
// 或者使用内置图标:
return EditorInterface.Singleton.GetEditorTheme().GetIcon("Item", "EditorIcons");
}
String _get_plugin_name() virtual const 🔗
在您的插件中重写此方法以在i3D编辑器中显示时提供插件的名称。
对于主屏幕插件,这显示在屏幕顶部,“2D”、“3D”、“Script”和“AssetLib”按钮的右侧。
Dictionary _get_state() virtual const 🔗
覆盖此方法以提供要保存的状态数据,例如视图位置、网格设置、折叠等。这在保存场景时使用(因此打开时可以保留状态)和切换选项卡时使用(因此可以在选项卡返回时恢复状态)。这些数据会自动保存在编辑器元数据文件夹中的editstate文件中。如果您想为您的插件存储全局(与场景无关)的编辑器数据,可以使用_get_window_layout()代替。
使用_set_state()来恢复您保存的状态。
注意:此方法不应用于保存应与项目一起持久的重要设置。
注意:您必须实现_get_plugin_name()才能正确存储和恢复状态。
func _get_state():
var state = {"zoom": zoom, "preferred_color": my_color}
return state
String _get_unsaved_status(for_scene: String) virtual const 🔗
覆盖此方法以提供自定义消息,列出未保存的更改。当退出或关闭场景时,编辑器将调用此方法,并在确认对话框中显示返回的字符串。如果插件没有未保存的更改,请返回空字符串。
当关闭场景时,for_scene是要关闭的场景的路径。您可以使用它来处理该场景中的内置资源。
如果用户确认保存,_save_external_data()将在关闭编辑器之前被调用。
func _get_unsaved_status(for_scene):
if not unsaved:
return ""
if for_scene.is_empty():
return "Save changes in MyCustomPlugin before closing?"
else:
return "Scene %s has changes from MyCustomPlugin. Save before closing?" % for_scene.get_file()
func _save_external_data():
unsaved = false
如果插件没有特定于场景的更改,则可以在关闭场景时忽略调用:
func _get_unsaved_status(for_scene):
if not for_scene.is_empty():
return ""
void _get_window_layout(configuration: ConfigFile) virtual 🔗
覆盖此方法以提供插件的GUI布局或您希望存储的任何其他数据。这用于在调用queue_save_layout()或更改编辑器布局时(例如更改停靠位置)保存项目的编辑器布局。数据存储在编辑器元数据目录中的editor_layout.cfg文件中。使用_set_window_layout()来恢复您保存的布局。
func _get_window_layout(configuration):
configuration.set_value("MyPlugin", "window_position", $Window.position)
configuration.set_value("MyPlugin", "icon_color", $Icon.modulate)
bool _handles(object: Object) virtual const 🔗
如果您的插件编辑特定类型的对象(资源或节点),请实现此功能。如果您返回true,那么您将获得编辑器请求时调用的函数_edit()和_make_visible()。如果您声明了方法_forward_canvas_gui_input()和_forward_3d_gui_input(),它们也将被调用。
注意:每个插件一次只能处理一种类型的对象。如果一个插件处理更多类型的对象并且同时编辑它们,则会导致错误。
bool _has_main_screen() virtual const 🔗
如果这是一个主屏幕编辑器插件,则返回true(它与** 2D**、3D、Script和AssetLib一起进入工作区选择器)。
当插件的工作区被选中时,其他主屏幕插件将被隐藏,但你的插件不会自动出现。它需要作为EditorInterface.get_editor_main_screen()的子项添加,并在_make_visible()内部可见。
使用_get_plugin_name()和_get_plugin_icon()自定义插件按钮的外观。
var plugin_control
func _enter_tree():
plugin_control = preload("my_plugin_control.iscn").instantiate()
EditorInterface.get_editor_main_screen().add_child(plugin_control)
plugin_control.hide()
func _has_main_screen():
return true
func _make_visible(visible):
plugin_control.visible = visible
func _get_plugin_name():
return "My Super Cool Plugin 3000"
func _get_plugin_icon():
return EditorInterface.get_editor_theme().get_icon("Item", "EditorIcons")
void _make_visible(visible: bool) virtual 🔗
当请求编辑器变得可见时,将调用此函数。它用于编辑特定对象类型的插件。
请记住,您必须手动管理所有编辑器控件的可见性。
void _save_external_data() virtual 🔗
此方法在编辑器保存项目后或关闭时调用。它要求插件保存编辑后的外部场景/资源。
void _set_state(state: Dictionary) virtual 🔗
恢复_get_state()保存的状态。该方法在编辑器中更改当前场景选项卡时被调用。
注意:您的插件必须实现_get_plugin_name(),否则它不会被识别出来,该方法也不会被调用。
func _set_state(data):
zoom = data.get("zoom", 1.0)
preferred_color = data.get("my_color", Color.WHITE)
void _set_window_layout(configuration: ConfigFile) virtual 🔗
恢复插件GUI布局和_get_window_layout()保存的数据。该方法在编辑器启动时对每个插件都调用。使用提供的configuration文件来读取已保存的数据。
func _set_window_layout(configuration):
$Window.position = configuration.get_value("MyPlugin", "window_position", Vector2())
$Icon.modulate = configuration.get_value("MyPlugin", "icon_color", Color.WHITE)
void add_autoload_singleton(name: String, path: String) 🔗
将path处的脚本作为name添加到自动加载列表。
将插件添加到上下文菜单。slot是将添加插件的上下文菜单。
有关可用的上下文菜单,请参见ContextMenuSlot。插件实例只能属于单个上下文菜单槽。
Button add_control_to_bottom_panel(control: Control, title: String, shortcut: Shortcut = null) 🔗
将控件添加到底部面板(连同输出、调试、动画等)。返回对添加按钮的引用。需要时由您隐藏/显示按钮。当您的插件被停用时,请确保使用remove_control_from_bottom_panel()删除您的自定义控件,并使用Item.queue_free()释放它。
或者,您可以指定快捷方式参数。按下时,此快捷方式将切换底部面板的可见性。有关灵感,请参阅编辑器设置中的默认编辑器底部面板快捷方式。根据惯例,它们都使用Alt修饰符。
void add_control_to_container(container: CustomControlContainer, control: Control) 🔗
将自定义控件添加到容器(参见CustomControlContainer)。可以在编辑器UI中的许多位置添加自定义控件。
请记住,您必须自己管理自定义控件的可见性(并且可能在添加后隐藏它)。
当您的插件被停用时,请确保使用remove_control_from_container()删除您的自定义控件,并使用Item.queue_free()释放它。
void add_control_to_dock(slot: DockSlot, control: Control, shortcut: Shortcut = null) 🔗
将控件添加到特定的停靠槽(有关选项,请参阅DockSlot)。
如果停靠站被重新定位并且只要插件处于活动状态,编辑器将在进一步的会话中保存停靠站位置。
当您的插件被停用时,请确保使用remove_control_from_docks()删除您的自定义控件,并使用Item.queue_free()释放它。
或者,您可以指定快捷方式参数。按下此快捷方式后,一旦停靠移动到底部面板,它将切换停靠的可见性(否则此快捷方式不会影响停靠)。有关灵感,请参阅编辑器设置中的默认编辑器底部面板快捷方式。根据惯例,它们都使用Alt修饰符。
void add_custom_type(type: String, base: String, script: Script, icon: Texture2D) 🔗
添加自定义类型,该类型将出现在节点或资源列表中。
选择给定节点或资源时,将实例化基本类型(例如“Item3D”、“Control”、“Resource”),然后加载脚本并设置为该对象。
注意:基类型是该类型的类层次结构继承的基引擎类,而不是任何自定义类型的父类。
您可以使用虚拟方法_handles()通过检查脚本或使用is关键字来检查您的自定义对象是否正在被编辑。
在运行时,这将是一个带有脚本的简单对象,因此不需要调用此函数。
注意:以这种方式添加的自定义类型不是真正的类。它们只是使用特定脚本创建节点的助手。
void add_debugger_plugin(script: EditorDebuggerPlugin) 🔗
将Script作为调试器插件添加到调试器。脚本必须扩展EditorDebuggerPlugin。
void add_export_platform(platform: EditorExportPlatform) 🔗
注册一个新的EditorExportPlatform。导出平台提供导出到特定平台的功能。
void add_export_plugin(plugin: EditorExportPlugin) 🔗
注册一个新的EditorExportPlugin。导出插件用于在导出项目时执行任务。
有关如何注册插件的示例,请参见add_inspector_plugin()。
void add_import_plugin(importer: EditorImportPlugin, first_priority: bool = false) 🔗
注册一个新的EditorImportPlugin。导入插件用于将自定义和不受支持的资产作为自定义Resource类型导入。
如果first_priority为true,则新的导入插件首先插入到列表中,并优先于预先存在的插件。
注意:如果要导入自定义3D资产格式,请改用add_scene_format_importer_plugin()。
有关如何注册插件的示例,请参见add_inspector_plugin()。
void add_inspector_plugin(plugin: EditorInspectorPlugin) 🔗
注册一个新的EditorInspectorPlugin。检查器插件用于扩展EditorInspector并为对象的属性提供自定义配置工具。
注意:当您的EditorPlugin被禁用时,请始终使用remove_inspector_plugin()来删除注册的EditorInspectorPlugin,以防止泄露和意外行为。
const MyInspectorPlugin = preload("res://addons/your_addon/path/to/your/script.s3")
var inspector_plugin = MyInspectorPlugin.new()
func _enter_tree():
add_inspector_plugin(inspector_plugin)
func _exit_tree():
remove_inspector_plugin(inspector_plugin)
void add_node_3d_gizmo_plugin(plugin: EditorNode3DGizmoPlugin) 🔗
注册一个新的EditorNode3DGizmoPlugin。Gizmo插件用于将自定义小工具添加到Item3D的3D预览视口。
有关如何注册插件的示例,请参见add_inspector_plugin()。
void add_resource_conversion_plugin(plugin: EditorResourceConversionPlugin) 🔗
注册一个新的EditorResourceConversionPlugin。资源转换插件用于将自定义资源转换器添加到编辑器检查器。
有关如何创建资源转换插件的示例,请参见EditorResourceConversionPlugin。
void add_scene_format_importer_plugin(scene_format_importer: EditorSceneFormatImporter, first_priority: bool = false) 🔗
注册一个新的EditorSceneFormatImporter。场景导入器用于将自定义3D资产格式导入为场景。
如果first_priority为true,则新的导入插件首先插入到列表中,并优先于预先存在的插件。
void add_scene_post_import_plugin(scene_import_plugin: EditorScenePostImportPlugin, first_priority: bool = false) 🔗
添加EditorScenePostImportPlugin。这些插件允许通过向导入对话框添加新选项来自定义3D资产的导入过程。
如果first_priority为true,则新的导入插件首先插入到列表中,并优先于预先存在的插件。
将自定义菜单项添加到名为name的项目>工具。单击时,将调用提供的callable。
在Project>Tools>name下添加自定义PopupMenu子菜单。在插件清理中使用remove_tool_menu_item()删除菜单。
void add_translation_parser_plugin(parser: EditorTranslationParserPlugin) 🔗
注册自定义翻译解析器插件,用于从自定义文件中提取可翻译字符串。
void add_undo_redo_inspector_hook_callback(callable: Callable) 🔗
当在检查器中修改属性时,将回调挂钩到撤消/重做操作创建中。例如,这允许保存在修改给定属性时可能丢失的其他属性。
回调应该有4个参数:Objectundo_redo、Objectmodified_object、String属性和Variantnew_value。它们分别是检查器使用的UndoRedo对象、当前修改的对象、修改后的属性名称和属性即将采用的新值。
EditorInterface get_editor_interface() 🔗
已弃用: EditorInterface 是全局单例,可以使用其名称直接访问。
返回EditorInterface单例实例。
返回场景>导出为…下的PopupMenu。
String get_plugin_version() const 🔗
提供plugin. cfg配置文件中声明的插件版本。
ScriptCreateDialog get_script_create_dialog() 🔗
获取用于制作脚本的编辑器对话框。
注意:用户可以在使用前对其进行配置。
警告:删除和释放此节点将使编辑器的一部分变得无用,并可能导致崩溃。
EditorUndoRedoManager get_undo_redo() 🔗
获取撤消/重做对象。编辑器中的大多数操作都是可撤消的,因此请使用此对象确保在值得时发生这种情况。
void hide_bottom_panel() 🔗
最小化底部面板。
void make_bottom_panel_item_visible(item: Control) 🔗
使底部面板中的特定项目可见。
void queue_save_layout() 🔗
队列保存项目的编辑器布局。
void remove_autoload_singleton(name: String) 🔗
从列表中删除Autoloadname。
删除指定的上下文菜单插件。
void remove_control_from_bottom_panel(control: Control) 🔗
从底部面板中删除控件。您必须手动Item.queue_free()控件。
void remove_control_from_container(container: CustomControlContainer, control: Control) 🔗
从指定容器中删除控件。您必须手动Item.queue_free()控件。
void remove_control_from_docks(control: Control) 🔗
从扩展坞中删除控件。您必须手动Item.queue_free()控件。
void remove_custom_type(type: String) 🔗
删除add_custom_type()添加的自定义类型。
void remove_debugger_plugin(script: EditorDebuggerPlugin) 🔗
从调试器中删除带有给定脚本的调试器插件。
void remove_export_platform(platform: EditorExportPlatform) 🔗
删除由add_export_platform()注册的导出平台。
void remove_export_plugin(plugin: EditorExportPlugin) 🔗
删除add_export_plugin()注册的导出插件。
void remove_import_plugin(importer: EditorImportPlugin) 🔗
删除add_import_plugin()注册的导入插件。
void remove_inspector_plugin(plugin: EditorInspectorPlugin) 🔗
删除add_inspector_plugin()注册的检查器插件。
void remove_node_3d_gizmo_plugin(plugin: EditorNode3DGizmoPlugin) 🔗
删除add_node_3d_gizmo_plugin()注册的gizmo插件。
void remove_resource_conversion_plugin(plugin: EditorResourceConversionPlugin) 🔗
删除add_resource_conversion_plugin()注册的资源转换插件。
void remove_scene_format_importer_plugin(scene_format_importer: EditorSceneFormatImporter) 🔗
删除由add_scene_format_importer_plugin()注册的场景格式导入器。
void remove_scene_post_import_plugin(scene_import_plugin: EditorScenePostImportPlugin) 🔗
删除EditorScenePostImportPlugin,添加add_scene_post_import_plugin()。
从Project>Tools中删除菜单name。
void remove_translation_parser_plugin(parser: EditorTranslationParserPlugin) 🔗
删除add_translation_parser_plugin()注册的自定义翻译解析器插件。
void remove_undo_redo_inspector_hook_callback(callable: Callable) 🔗
删除先前由add_undo_redo_inspector_hook_callback()添加的回调。
void set_dock_tab_icon(control: Control, icon: Texture2D) 🔗
设置停靠槽中给定控件的选项卡图标。设置为null会删除该图标。
void set_force_draw_over_forwarding_enabled() 🔗
当视图更新时,启用2D编辑器的_forward_canvas_force_draw_over_viewport()和3D编辑器的_forward_3d_force_draw_over_viewport()。您只需调用此方法一次,它将永久适用于此插件。
void set_input_event_forwarding_always_enabled() 🔗
如果您总是想从_forward_3d_gui_input()内的3D视图屏幕接收输入,请使用此方法。如果您的插件想要在场景中使用raycast,它可能特别有用。
更新2D和3D编辑器视口的覆盖层。导致调用方法_forward_canvas_draw_over_viewport()、_forward_canvas_force_draw_over_viewport()、_forward_3d_draw_over_viewport()和_forward_3d_force_draw_over_viewport()。