EditorContextMenuPlugin¶
继承: RefCounted < Object
用于在编辑器中添加自定义上下文菜单的插件。
描述¶
EditorContextMenuPlugin允许在编辑器的上下文菜单中添加自定义选项。
目前,上下文菜单支持三个常用区域:文件系统、场景树和编辑器脚本列表面板。
方法¶
void |
_popup_menu(paths: PackedStringArray) virtual |
void |
add_context_menu_item(name: String, callback: Callable, icon: Texture2D = null) |
void |
add_context_menu_item_from_shortcut(name: String, shortcut: Shortcut, icon: Texture2D = null) |
void |
add_context_submenu_item(name: String, menu: PopupMenu, icon: Texture2D = null) |
void |
add_menu_shortcut(shortcut: Shortcut, callback: Callable) |
枚举¶
enum ContextMenuSlot: 🔗
ContextMenuSlot CONTEXT_SLOT_SCENE_TREE = 0
场景码头的上下文菜单。_popup_menu()将被调用,其中包含当前选定节点的路径列表,而选项回调将接收当前选定节点的列表。
ContextMenuSlot CONTEXT_SLOT_FILESYSTEM = 1
_popup_menu()和选项回调将与当前选定文件的路径列表一起调用。
ContextMenuSlot CONTEXT_SLOT_SCRIPT_EDITOR = 2
脚本编辑器的脚本选项卡的上下文菜单。_popup_menu()将使用当前编辑脚本的路径调用,而选项回调将接收对该脚本的引用。
ContextMenuSlot CONTEXT_SLOT_FILESYSTEM_CREATE = 3
FileSystem扩展坞上下文菜单的“创建…”子菜单。_popup_menu()和选项回调将使用当前选定文件的路径列表调用。
ContextMenuSlot CONTEXT_SLOT_SCRIPT_EDITOR_CODE = 4
脚本编辑器代码编辑器的上下文菜单。_popup_menu()将被调用,传入CodeEdit节点的路径。您可以使用以下代码获取它:
func _popup_menu(paths):
var code_edit = Engine.get_main_loop().root.get_node(paths[0]);
选项回调将接收该节点的引用。你可以使用 CodeEdit 方法来执行符号查找等操作。
ContextMenuSlot CONTEXT_SLOT_SCENE_TABS = 5
场景选项卡的上下文菜单。_popup_menu()将使用单击场景的路径调用,如果菜单在空白空间打开,则为空PackedStringArray。选项回调将接收单击场景的路径,如果没有单击,则为空String。
ContextMenuSlot CONTEXT_SLOT_2D_EDITOR = 6
2D编辑器的基本右键菜单上下文菜单。_popup_menu()将被调用,传入光标下的所有CanvasItem节点的路径。您可以使用以下代码获取它们:
func _popup_menu(paths):
var canvas_item = Engine.get_main_loop().root.get_node(paths[0]); # Replace 0 with the desired index.
如果光标下没有任何节点,则路径数组为空。选项回调函数将收到一个CanvasItem节点的类型化数组。
方法说明¶
void _popup_menu(paths: PackedStringArray) virtual 🔗
创建上下文菜单时调用,可以使用add_context_menu_item()或add_context_menu_item_from_shortcut()函数添加自定义选项。paths包含当前选择的路径(取决于菜单),可用于有条件地添加选项。
void add_context_menu_item(name: String, callback: Callable, icon: Texture2D = null) 🔗
在插件指定的插槽的上下文菜单中添加自定义选项。当选项被激活时,将调用callback。回调函数应接受一个Array参数;数组内容取决于上下文菜单插槽。
func _popup_menu(paths):
add_context_menu_item("File Custom options", handle, ICON)
如果你想为菜单项分配快捷键,请使用add_context_menu_item_from_shortcut()方法。
void add_context_menu_item_from_shortcut(name: String, shortcut: Shortcut, icon: Texture2D = null) 🔗
在插件指定的插槽的上下文菜单中添加自定义选项。该选项将分配shortcut并重用其回调函数。该快捷键必须事先使用add_menu_shortcut()进行注册。
func _init():
add_menu_shortcut(SHORTCUT, handle)
func _popup_menu(paths):
add_context_menu_item_from_shortcut("File Custom options", SHORTCUT, ICON)
void add_context_submenu_item(name: String, menu: PopupMenu, icon: Texture2D = null) 🔗
在插件的指定插槽的上下文菜单中添加一个子菜单。该子菜单不会自动处理,您需要自行连接其信号。此外,子菜单在每次弹出时都会被释放,因此每次都需要提供一个新的PopupMenu。
func _popup_menu(paths):
var popup_menu = PopupMenu.new()
popup_menu.add_item("Blue")
popup_menu.add_item("White")
popup_menu.id_pressed.connect(_on_color_submenu_option)
add_context_submenu_item("Set Item Color", popup_menu)
void add_menu_shortcut(shortcut: Shortcut, callback: Callable) 🔗
注册与插件的上下文菜单关联的快捷键。此方法应只调用一次(例如在插件的Object._init()中)。callback将在用户在菜单的上下文有效时(例如文件系统扩展坞处于焦点时)按下指定的shortcut时被调用。回调函数应接受一个Array参数;数组内容取决于上下文菜单的插槽。
func _init():
add_menu_shortcut(SHORTCUT, handle)