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...
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
“文件系统”面板上下文菜单的“创建...”子菜单。调用 _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]); # 将 0 替换为想要的索引。
光标下没有节点时路径数组为空。可选回调接收的是类型为 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("文件自定义选项", 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("文件自定义选项", 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("蓝色")
popup_menu.add_item("白色")
popup_menu.id_pressed.connect(_on_color_submenu_option)
add_context_submenu_item("设置节点颜色", popup_menu)
void add_menu_shortcut(shortcut: Shortcut, callback: Callable) 🔗
为插件的上下文菜单注册快捷键。该方法只应调用一次(例如在插件的 Object._init() 中调用)。当用户按下 shortcut
快捷键且菜单上下文有效时就会调用 callback
(例如聚焦“文件系统”面板)。回调应接受一个 Array 参数;数组内容取决于具体的上下文菜单槽位。
func _init():
add_menu_shortcut(SHORTCUT, handle)