Language:
Page Info
Engine Version:

メニュー アンカー

説明

このウィジェットは、ポップアップメニューを固定する位置、およびポップアップメニューを呼び出す場所を指定することができます。

Details (詳細) パネル

配置した メニュー アンカー の詳細パネルには、ウィジェットに関連して設定可能な以下のオプションがあります。

DetailsPanel.png

オプション

説明

Menu Class

メニューが呼び出された場合にスポーンする Widget ブループリント (ポップアップ)。毎回ウィジェットを新たに作成します。

Placement

作成したウィジェットの位置を決めるために使用するいくつかの配置オプション。

OnGetMenuContent

ポップアップをカスタマイズできるようにします。これは、関数またはプロパティを、ポップアップを表示するときに呼び出される OnGetMenuContent Event にバインドして行います (以下参照)。

OnMenuOpenChanged

ポップアップをカスタマイズできるようにします。これは、関数またはプロパティを、メニューの開いた状態が変更されるときに呼び出される OnMenuOpenChanged Event にバインドして行います。

OnGetMenuContent Event では、[詳細] パネルから直接関数を作成し、バインドできます。これは、メニュー アンカーが呼び出されるたびに呼び出されます。これにより、ポップアップメニューの作成で機能を追加できます。例えば、以下ではプレイヤーが In Battle (戦闘中) であるかを判断するチェックを実行し、In Battle でなければ、ポップアップメニューにアクセスできるようにします。In Battle ならば、ポップアップメニューにアクセスできないようにします。

ExampleGetMenu.png

ブループリント関数

Menu Anchor ウィジェットには以下で説明するスクリプトを介して呼び出し可能ないくつかのウィジェット特有の関数があります。

MenuAnchorNodes.png

オプション

説明

Close

現在開いていればメニューを閉じます。

Get Menu Position

ワールド空間でメニューの位置を戻します。

Has Open Sub Menus

メニューがサブメニューを持つかどうかを戻します。

Is Open

ターゲットのメニューアンカーが現在開いているかをチェックし、Boolean を戻します。

Open

現在閉じていればメニューを開きます。

Should Open Due to Click

クリックによってメニューを開くことができるかどうかを戻します。

Toggle Open

メニューのオープン状態を切り替えます。開/閉の代わりに使用できます。

使用例

以下の例のようにインベントリ メニューを作成し、プレイヤーがアイテムをクリックしたときにポップアップを表示させるとします。

最初にやることは、ポップアップ メニューの外観を作成することです。

PopUpDesigner.png

上の画像では、縦方向ボックス (Vertical Box) 内に 3 つのボタンがある MenuPopUp と呼ばれる単純な Widget ブループリント を作成しました。

次にインベントリ メニューでもうひとつ Widget ブループリントを作成する必要があります。これは以下で HUD と呼んでいるものです。

MakeInventoryMenu.png

インベントリ メニューを作成したら Menu Anchor ウィジェット (Primitive の配下にあります) も追加します。

AddMenuAnchor.png

次に表示させたい場所にメニュー アンカーを配置します。ここでは、右/中央位置に配置し固定しました。

PlacedAnchor.png

メニュー アンカーの [Details (詳細)] パネルで Menu Class (またはスポーンする Widget ブループリント) とその配置オプションを設定します。

MenuAnchorDetails.png

グラフ タブで各ボタンに OnClick Event を追加し、Menu Anchor ウィジェット内にドラッグします。

Menu Anchor からドラッグし、Open 関数を呼び出し、指定したメニュー クラスを開き表示することができます。

HUD_Graph.png

Focus Menu オプションを選択すると、メニュー アンカー周囲にアウトラインのボックスを追加しますが、これは任意です。

インベントリ メニューを作成したら、そのメニューをゲーム内で何らかの方法で呼び出す必要があります。

これは Level ブループリント または (この例では) Default Pawn Class (MyCharacter を使用するように設定されています) を介して行うことができます。

DisplayingInventoryMenu.png

上の画像の MyCharacter ブループリントでは、ゲームが開始すると HUD ウィジェットを作成し、それを HUDWidget と呼ばれる変数として格納し、後でアクセスできるようにします。次に I を設定して Add to ViewportRemove from Parent との間を切り替えてインベントリ メニューを表示または取り除きます。また、インベントリ メニューを開くか開かないかに基づき、Show Mouse Cursor を有効または無効にします。

最後に MenuPopUp ブループリント (ポップアップ メニュー) 内で、プレイヤーがポップアップ メニューのボタンを押したときにメニュー アンカーを Close (閉じる) スクリプトを追加します。以下ではポップアップが構築されたときに、MyCharacter ブループリントへの参照を得ます。これは MyCharacterCasting to し、それを MyCharacterReference と呼ばれる変数に昇格させることで行います。この参照があると、 HUD にアクセスできます。

PopUpMenuNetwork.png

ポップアップの各ボタンに押下時に何かを行う (画面に表示する代わりに) 何らかの機能を追加したいかもしれません。例えば、最初のボタンはインベントリのアイテムを「使用」し、2 つめはアイテムを「ドロップ」し、3 つめは「キャンセル」し、プレイヤーをインベントリ メニューに戻します。

これはほんの一例にすぎません。何がメニュー アンカーが開く原因になるかを変更することもできます。ボタン押下の代わりに IsHovered 関数を使用して、オブジェクト上にカーソルが乗っているかを判断し、メニュー アンカーとポップアップ ウィンドウを開きツールチップや他の何らかの通知フォームを表示します。いずれの場合でも、これでスクリプトを通してメニュー アンカーの使用を開始し、ポップアップ ウィジェットを表示 / 削除します。