跳到主要内容

弹出菜单

概述

弹出菜单(PopupMenu)用于显示选项列表。在工具栏或上下文菜单中很常用。菜单按钮点击后会弹出一个弹出菜单控件,通过该节点的方法和信号可以完成交互。

另请参阅弹窗,其中包含与此节点关联的通用属性和方法。

节点使用

添加条目

在使用前需要为弹出菜单添加条目。添加方法是:选择一个选择按钮控件,点击画布中工具栏右侧的”条目“选项,然后在弹出的编辑框中添加,如下图所示:

每个条目有一个索引值,从0开始递增,在左上角可以查看。条目各属性的作用如下:

  • 文本:条目显示的文本
  • 图标:条目显示的图标,不支持缩放
  • 可检查:条目是否可以被复选
    • 否:条目前没有复选框
    • As checkbox:条目前会有一个复选框作为复选样式
    • As ration button:条目前会有一个单选按钮作为复选样式
  • 启用:条目是否可选
  • 分隔符:勾选后,该条目上会添加一个分隔符标志,用于制作菜单的分割线

方法

通过弹出菜单的方法可以在脚本中创建条目,详情参考对应的API文档

信号

  • id_focused ( int id )

当用户使用ui_up(默认为方向键上键)或ui_down(默认为方向键下键)操作导航到某个id项时触发。

  • id_pressed ( int id )

  • index_pressed ( int index )

当按下某一项时触发,参数分别为条目id和条目索引。

交互制作

通过以下步骤,可以实现菜单按钮的交互效果:

通过脚本连接信号

菜单按钮中包含的弹出菜单控件是隐式的,因此需要在运行时通过脚本为其连接信号,连接方法如下:

  1. 创建一个2D场景,新建一个菜单按钮节点,按钮文字设为”菜单按钮“

  2. 在根节点创建一个脚本,将菜单按钮拖入可视化脚本中,Ctrl+左键,创建一个”Get Popup“方法

  3. 通过搜索创建一个”Connect“节点和“Self”节点

  4. 点击Connect节点,在属性栏中将”调用模式“改为”实例

  5. 创建一个初始化节点,连接脚本如下图所示,Connect节点中的字符串需要手动修改:

这样就完成了将菜单按钮下的弹出菜单控件中的信号连接到了一个脚本中名为“on_item_pressed”的函数。

交互制作

以上步骤完成了信号的连接,但还没有实现“on_item_pressed"的函数,实现方法参考以下步骤:

  1. 为菜单按钮创建三个默认条目

  2. 在交互脚本中的自定义单元中新建一个函数,命名为”on_item_pressed“

  3. 点击新建的函数节点,在属性栏中为其添加一个参数,类型为int

  4. 连接一个”输出字符串“节点,全部脚本如下图所示

  5. 运行场景,每次点击选项后会在输出栏打印所点击选项的索引