EditorPlugin

Inherits: Node < Object

类别: 核心

简要说明

由编辑器用于扩展其功能。

方法

无效

add_autoload_singleton ( String name, String path )

ToolButton

add_control_to_bottom_panel ( Control control, String title )

无效

add_control_to_container ( CustomControlContainer container, Control control )

无效

add_control_to_dock ( DockSlot slot, Control control )

无效

add_custom_type ( String type, String base, Script script, Texture icon )

无效

add_export_plugin ( EditorExportPlugin plugin )

无效

add_import_plugin ( EditorImportPlugin importer )

无效

add_inspector_plugin ( EditorInspectorPlugin plugin )

无效

add_scene_import_plugin ( EditorSceneImporter scene_importer )

无效

add_spatial_gizmo_plugin ( EditorSpatialGizmoPlugin plugin )

无效

add_tool_menu_item ( String name, Object handler, String callback, Variant ud=null )

无效

add_tool_submenu_item ( String name, Object submenu )

无效

apply_changes ( ) virtual

bool

build ( ) virtual

无效

clear ( ) virtual

无效

disable_plugin ( ) virtual

无效

edit ( Object object ) virtual

无效

enable_plugin ( ) virtual

无效

forward_canvas_draw_over_viewport ( Control overlay ) virtual

无效

forward_canvas_force_draw_over_viewport ( Control overlay ) virtual

bool

forward_canvas_gui_input ( InputEvent event ) virtual

bool

forward_spatial_gui_input ( Camera camera, InputEvent event ) virtual

PoolStringArray

get_breakpoints ( ) virtual

EditorInterface

get_editor_interface ( )

Object

get_plugin_icon ( ) virtual

String

get_plugin_name ( ) virtual

ScriptCreateDialog

get_script_create_dialog ( )

Dictionary

get_state ( ) virtual

UndoRedo

get_undo_redo ( )

无效

get_window_layout ( ConfigFile layout ) virtual

bool

handles ( Object object ) virtual

bool

has_main_screen ( ) virtual

无效

hide_bottom_panel ( )

无效

make_bottom_panel_item_visible ( Control item )

无效

make_visible ( bool visible ) virtual

无效

queue_save_layout ( ) const

无效

remove_autoload_singleton ( String name )

无效

remove_control_from_bottom_panel ( Control control )

无效

remove_control_from_container ( CustomControlContainer container, Control control )

无效

remove_control_from_docks ( Control control )

无效

remove_custom_type ( String type )

无效

remove_export_plugin ( EditorExportPlugin plugin )

无效

remove_import_plugin ( EditorImportPlugin importer )

无效

remove_inspector_plugin ( EditorInspectorPlugin plugin )

无效

remove_scene_import_plugin ( EditorSceneImporter scene_importer )

无效

remove_spatial_gizmo_plugin ( EditorSpatialGizmoPlugin plugin )

无效

remove_tool_menu_item ( String name )

无效

save_external_data ( ) virtual

无效

set_force_draw_over_forwarding_enabled ( )

无效

set_input_event_forwarding_always_enabled ( )

无效

set_state ( Dictionary state ) virtual

无效

set_window_layout ( ConfigFile layout ) virtual

int

update_overlays ( ) const

信号

  • main_screen_changed ( String screen_name )

当用户更改工作区时发出( 2D3D脚本AssetLib )还可以使用插件定义的自定义屏幕。

  • scene_changed ( Node scene_root )

在编辑器中更改场景时发出。参数将返回刚刚激活的场景的根节点。如果这个场景是新的和空的,那么参数将是 null .

  • scene_closed ( String filepath )

当用户关闭场景时发出。参数是指向关闭场景的文件路径。

枚举

枚举 CustomControlContainer

  • CONTAINER_TOOLBAR = 0

  • CONTAINER_SPATIAL_EDITOR_MENU = 1

  • CONTAINER_SPATIAL_EDITOR_SIDE_LEFT = 2

  • CONTAINER_SPATIAL_EDITOR_SIDE_RIGHT = 3

  • CONTAINER_SPATIAL_EDITOR_BOTTOM = 4

  • CONTAINER_CANVAS_EDITOR_MENU = 5

  • CONTAINER_CANVAS_EDITOR_SIDE_LEFT = 6

  • CONTAINER_CANVAS_EDITOR_SIDE_RIGHT = 7

  • CONTAINER_CANVAS_EDITOR_BOTTOM = 8

  • CONTAINER_PROPERTY_EDITOR_BOTTOM = 9

  • CONTAINER_PROJECT_SETTING_TAB_LEFT = 10

  • CONTAINER_PROJECT_SETTING_TAB_RIGHT = 11

枚举 DockSlot

  • DOCK_SLOT_LEFT_UL = 0

  • DOCK_SLOT_LEFT_BL = 1

  • DOCK_SLOT_LEFT_UR = 2

  • DOCK_SLOT_LEFT_BR = 3

  • DOCK_SLOT_RIGHT_UL = 4

  • DOCK_SLOT_RIGHT_BL = 5

  • DOCK_SLOT_RIGHT_UR = 6

  • DOCK_SLOT_RIGHT_BR = 7

  • DOCK_SLOT_MAX = 8 ---表示 DockSlot 枚举。

描述

编辑器使用插件来扩展功能。最常见的插件类型是那些编辑给定节点或资源类型、导入插件和导出插件的插件。另请参见 EditorScript 向编辑器中添加函数。

方法说明

在处添加脚本 path 自动加载列表为 name .

将控件添加到底部面板(连同输出、调试、动画等)。返回对所添加按钮的引用。当需要时,由你来隐藏/显示按钮。当您的插件被停用时,请确保用 remove_control_from_bottom_panel 然后用 Node.queue_free .

将自定义控件添加到容器(请参见 CustomControlContainer )可以在编辑器UI中添加自定义控件的位置很多。

请记住,您必须自己管理自定义控件的可见性(并可能在添加后隐藏它)。

当您的插件被停用时,请确保用 remove_control_from_container 然后用 Node.queue_free .

将控件添加到特定的停靠槽(请参见 DockSlot 对于选项)。

如果Dock被重新定位,并且只要插件处于活动状态,编辑器将在后续会话中保存Dock位置。

当您的插件被停用时,请确保用 remove_control_from_docks 然后用 Node.queue_free .

添加将显示在节点或资源列表中的自定义类型。可以选择传递图标。

当选择给定的节点或资源时,将实例化基本类型(即“空间”、“控制”、“资源”),然后将脚本加载并设置为此对象。

您可以使用虚拟方法 handles 通过检查脚本或使用 is 关键字。

在运行时期间,这将是一个带有脚本的简单对象,因此不需要调用该函数。

将自定义菜单添加到 Project > Tools 作为 name 那个电话 callback 以…为例 handler 带参数 ud 当用户激活它时。

  • void add_tool_submenu_item ( String name, Object submenu )

喜欢 add_tool_menu_item 但补充说 submenu 项目内部 name 菜单。

  • void apply_changes ( ) virtual

当编辑器将要保存项目、切换到其他选项卡等时调用此方法。它要求插件应用任何挂起状态更改以确保一致性。

例如,在“明暗器编辑器”(Shader Editors)中,它用于让插件知道它必须将用户正在编写的明暗器代码应用于对象。

  • bool build ( ) virtual

  • void clear ( ) virtual

清除所有状态并将正在编辑的对象重置为零。这样可以确保插件不会继续编辑当前存在的节点或错误场景中的节点。

  • void disable_plugin ( ) virtual

当用户禁用 EditorPlugin 在“项目设置”窗口的“插件”选项卡中。

  • void edit ( Object object ) virtual

此函数用于编辑特定对象类型(节点或资源)的插件。它要求编辑器编辑给定的对象。

  • void enable_plugin ( ) virtual

当用户启用 EditorPlugin 在“项目设置”窗口的“插件”选项卡中。

  • void forward_canvas_draw_over_viewport ( Control overlay ) virtual

  • void forward_canvas_force_draw_over_viewport ( Control overlay ) virtual

当当前编辑的场景中有根节点时调用, handles 是执行的,并且 InputEvent 在二维视区中发生。截获 InputEvent 如果 return true EditorPlugin 消耗 event ,否则转发 event 其他编辑器类。例子:

# Prevents the InputEvent to reach other Editor classes
func forward_canvas_gui_input(event):
    var forward = true
    return forward

必须 return false 为了转发 InputEvent 其他编辑器类。例子:

# Consumes InputEventMouseMotion and forwards other InputEvent types
func forward_canvas_gui_input(event):
    var forward = false
    if event is InputEventMouseMotion:
        forward = true
    return forward

当当前编辑的场景中有根节点时调用, handles 是执行的,并且 InputEvent 在3D视区中发生。截获 InputEvent 如果 return true EditorPlugin 消耗 event ,否则转发 event 其他编辑器类。例子:

# Prevents the InputEvent to reach other Editor classes
func forward_spatial_gui_input(camera, event):
    var forward = true
    return forward

必须 return false 为了转发 InputEvent 其他编辑器类。例子:

# Consumes InputEventMouseMotion and forwards other InputEvent types
func forward_spatial_gui_input(camera, event):
    var forward = false
    if event is InputEventMouseMotion:
        forward = true
    return forward

这适用于编辑基于脚本的对象的编辑器。可以返回格式为的断点列表 (script:line )例如: res://path_to_script.gd:25 .

返回 EditorInterface 对象,使您可以控制Godot编辑器窗口及其功能。

  • Object get_plugin_icon ( ) virtual

  • String get_plugin_name ( ) virtual

获取用于制作脚本的编辑器对话。

注: 用户可以在使用前对其进行配置。

获取插件编辑器的状态。这用于保存场景(再次打开时保持状态)和切换选项卡(以便选项卡返回时恢复状态)。

获取撤消/重做对象。编辑器中的大多数操作都是可撤消的,因此请使用此对象确保在值得时发生这种情况。

  • void get_window_layout ( ConfigFile layout ) virtual

获取插件的GUI布局。用于保存项目的编辑器布局,当 queue_save_layout 调用或更改编辑器布局(例如更改停靠位置)。

如果插件编辑特定类型的对象(资源或节点),则实现此函数。如果你回来 true ,然后您将得到函数 editmake_visible 当编辑器请求时调用。如果你已经声明了方法 forward_canvas_gui_inputforward_spatial_gui_input 这些也将被称为。

  • bool has_main_screen ( ) virtual

返回 true 如果这是主屏幕编辑器插件(它与 2D3D脚本AssetLib

  • void hide_bottom_panel ( )

  • void make_bottom_panel_item_visible ( Control item )

  • void make_visible ( bool visible ) virtual

当请求编辑器变为可见时,将调用此函数。它用于编辑特定对象类型的插件。

记住,您必须手动管理所有编辑器控件的可见性。

  • void queue_save_layout ( ) const

队列保存项目的编辑器布局。

  • void remove_autoload_singleton ( String name )

删除自动加载 name 从名单上。

  • void remove_control_from_bottom_panel ( Control control )

从底部面板中删除控件。你必须手动 Node.queue_free 控制。

从指定的容器中移除控件。你必须手动 Node.queue_free 控制。

  • void remove_control_from_docks ( Control control )

从停靠中移除控件。你必须手动 Node.queue_free 控制。

  • void remove_custom_type ( String type )

删除由添加的自定义类型 add_custom_type .

  • void remove_tool_menu_item ( String name )

删除菜单 nameProject > Tools .

  • void save_external_data ( ) virtual

此方法在编辑器保存项目或关闭项目后调用。它要求插件保存已编辑的外部场景/资源。

  • void set_force_draw_over_forwarding_enabled ( )

  • void set_input_event_forwarding_always_enabled ( )

如果您总是希望从内部的3D视图屏幕接收输入,请使用此方法 forward_spatial_gui_input . 如果你的插件想要在场景中使用光线投射,它可能特别有用。

还原由保存的状态 get_state .

  • void set_window_layout ( ConfigFile layout ) virtual

恢复插件GUI布局 get_window_layout .

  • int update_overlays ( ) const

更新编辑器(二维/三维)视区的覆盖。