菜单锚

搭配弹出菜单使用的菜单锚使用概述。

Windows
MacOS
Linux
On this page

描述

此控件用于指定一个位置,弹出菜单将从此处调出并被锚定在此处。

详情

在已放置的 菜单锚细节 面板中,有一系列与此控件相关并可以进行设置的特定选项:

DetailsPanel.png

选项

描述

菜单类

调用菜单时生成的控件蓝图(弹出窗口)。每次都重新创建控件。

布置

几个布置选项,用于确定所创建的控件的位置。

OnGetMenuContent

通过将功能或属性绑定到 OnGetMenuContent 事件(调出弹出窗口时会调用该事件),实现对弹出窗口的自定义(请参阅下文)。

OnMenuOpenChanged

通过将功能或属性绑定到 OnMenuOpenChanged 事件(菜单的打开状态发生变化时调用该事件),实现对弹出窗口的自定义。

对于 OnGetMenuContent 事件,您可以直接从 详情 面板创建并绑定功能,只要调用菜单锚,就会调用该面板。这用于为弹出菜单的创建过程提供额外的功能。例如,下图我们运行了一项检查来确定玩家是否"正在战斗",如果没有,则允许他们访问弹出菜单。如果正在战斗,则不允许他们访问弹出菜单。

ExampleGetMenu.png

蓝图功能

菜单锚控件拥有一些控件特有的功能,这些功能可以通过脚本进行调用,下文进行介绍。

MenuAnchorNodes.png

选项

描述

关闭

如果菜单当前已打开,则关闭菜单。

获取菜单位置

返回菜单在世界空间中的位置。

有打开的子菜单

返回菜单是否有打开的子菜单。

是否打开

检查目标菜单锚当前是否已打开,并返回布尔值。

打开

如果菜单当前已关闭,则打开菜单。

应在点击时打开

返回菜单是否可通过点击打开。

切换打开

此功能可切换菜单的打开状态,并可以用于代替打开/关闭。

使用示例

若您想要创建库存菜单并在玩家点击物品时显示弹出菜单,请参阅以下示例。

首先您要创建弹出菜单的外观。

PopUpDesigner.png

上图我们创建了一个简单的 控件蓝图,名为 MenuPopUp,它由垂直框以及其中的三个按钮组成。

接下来,需要为库存菜单创建另一个控件蓝图,下文我们将其称为 HUD

MakeInventoryMenu.png

创建了库存菜单后,您还要添加 菜单锚 控件(位于 基元 下方)。

AddMenuAnchor.png

然后,将菜单锚放置在希望其显示的位置,在本例中,我们将其放置并锚定在右边/中间的位置。

PlacedAnchor.png

在菜单锚的 详情 面板中,设置 菜单类(或要生成的控件蓝图)及其布置选项。

MenuAnchorDetails.png

在"图表"选项卡上,为每个按钮添加 OnClick 事件,并拖动到菜单锚控件中。

拖动菜单锚,可以调用 打开 功能来打开并显示特定的菜单类。

HUD_Graph.png

选中 焦点菜单 选项时,会在菜单锚周围添加外框,这是一个可选项。

创建了库存菜单后,需要通过某种方式在游戏中调用该菜单。

可以选择通过 关卡蓝图 或(在我们的示例中)通过默认 Pawn 类(将其设为使用 MyCharacter 蓝图)调用。

DisplayingInventoryMenu.png

在上述 MyCharacter 蓝图中,当游戏开始时,我们创建 HUD 控件并将其保存为名为 HUDWidget 的变量,这样,我们就可以在以后访问该控件。然后,将 I 设置为在 Add to ViewportRemove from Parent 之间切换,从而显示或隐去库存菜单。我们还将 Show Mouse Cursor 设为根据是否打开了库存菜单来启用或禁用。

最后,在 MenuPopUp 蓝图(您的弹出菜单)中,添加一些脚本,以便在玩家按下弹出菜单中的某个按钮时 关闭 菜单锚。下图中,当构建了弹出菜单后,我们 投射 它,然后将其提升为名为 MyCharacterReference 的变量,如此我们就得到了 MyCharacter 蓝图的引用。通过该引用就可以访问 HUD

PopUpMenuNetwork.png

您可能想要为弹出菜单中的每个按钮添加一些功能,在按下按钮时,会调用这些功能(而不是输出到屏幕上)。例如,按下第一个按钮"使用"库存中的物品,按下第二个按钮"丢弃"物品,按下第三个按钮"取消"操作并让玩家返回到库存菜单。

这只是一个示例,您也可以更改菜单锚开启的条件。除了按下按钮,也可以使用 IsHovered 功能来确定光标是否悬停在某个对象上,然后打开菜单锚和弹出窗口,以便显示工具提示或其他形式的通知。无论是哪种情况,您都可以开始通过脚本来实现使用菜单锚显示/隐去弹出控件。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback