Menu
Introduction
A widget used to display menu items and handle navigation between the items
Dependencies
The Menu
relies on other components of this plugin to work:
- Logger: Used to log useful information to help you debug any issues you might experience
- Game Instance: Used to monitor for input device changes and handle saving/loading game data
- Audio: Used to play sound effects either 2D or at a specified location
Optional Widgets
You can add the following widgets to enable extra functionality:
Name | Description | Type |
---|---|---|
ScrollContainer | Scroll container used for large menus with many items | UScrollBox* |
Container | The container used to display the menu items | UPanelWidget* |
API Reference
Properties
Property | Description | Type | Default Value |
---|---|---|---|
HighlightFirstItemOnStart | Should the first item be highlighted when the menu is loaded? | bool | true |
AddInputBindingOnLoad | Should the input binding automatically be added as soon as the widget is loaded? | bool | false |
PauseGameWhileVisible | Should the game automatically be paused/resumed based on the visibility of the menu? | bool | false |
DisableWhilePaused | Should the menu be disabled while the game is paused? | bool | false |
SelectedSFX | The sound effect played when a menu item is selected | USoundBase* | nullptr |
BackSFX | The sound effect played when trying to go back to a previous menu or closing the menu through the back button | USoundBase* | nullptr |
InputMappingContext | The input mapping context used to navigate the menu | UInputMappingContext* | nullptr |
MenuUpInputAction | The input action used to navigate up | UInputAction* | nullptr |
MenuDownInputAction | The input action used to navigate down | UInputAction* | nullptr |
MenuLeftInputAction | The input action used to navigate left | UInputAction* | nullptr |
MenuRightInputAction | The input action used to navigate right | UInputAction* | nullptr |
MenuSelectInputAction | The input action used to select a menu item | UInputAction* | nullptr |
MenuBackInputAction | The input action used to go back to a previous menu or close the menu | UInputAction* | nullptr |
Events
Name | Description | Params |
---|---|---|
OnBackEvent | Event used to handle the back/close action of the menu |
Functions
Name | Description | Params | Return |
---|---|---|---|
OnMenuUp | Navigate up or increase the value | ||
OnMenuUpHold | Increase the value while holding the menu up key | ||
OnMenuDown | Navigate down or decrease the value | ||
OnMenuDownHold | Decrease the value while holding the menu down key | ||
OnMenuLeft | Navigate left or decrease the value | ||
OnMenuLeftHold | Decrease the value while holding the menu left key | ||
OnMenuRight | Navigate right or increase the value | ||
OnMenuRightHold | Increase the value while holding the menu right key | ||
OnMenuSelected | Select the current menu item | ||
OnMenuBack | Go back to a previous menu or close the menu | ||
RequestHighlight | Request to highlight a specific menu item | MenuItem (UMenuItem*) The menu item to highlight |
|
RemoveHighlight | Request to remove the highlighted state from a specific menu item | MenuItem (UMenuItem*) The menu item to remove the highlighted state from |
|
AddMenuItem | Add a menu item to the container | MenuItem (UMenuItem*) The menu item to add |
Blueprint Usage
You can use the Menu
using Blueprints by adding one of the following nodes:
- Ultimate Starter Kit > UI > On Menu Up
- Ultimate Starter Kit > UI > On Menu Up Hold
- Ultimate Starter Kit > UI > On Menu Down
- Ultimate Starter Kit > UI > On Menu Down Hold
- Ultimate Starter Kit > UI > On Menu Left
- Ultimate Starter Kit > UI > On Menu Left Hold
- Ultimate Starter Kit > UI > On Menu Right
- Ultimate Starter Kit > UI > On Menu Right Hold
- Ultimate Starter Kit > UI > On Menu Selected
- Ultimate Starter Kit > UI > On Menu Back
- Ultimate Starter Kit > UI > Request Highlight
- Ultimate Starter Kit > UI > Remove Highlight
- Ultimate Starter Kit > UI > Add Menu Item
C++ Usage
Before you can use the plugin, you first need to enable the plugin in your Build.cs
file:
PublicDependencyModuleNames.Add("USK");
The Menu
can now be used in any of your C++ files:
#include "USK/Widgets/Menu.h"
void ATestActor::Test()
{
// Menu is a pointer to the UMenu
Menu->OnMenuUp();
Menu->OnMenuUpHold();
Menu->OnMenuDown();
Menu->OnMenuDownHold();
Menu->OnMenuLeft();
Menu->OnMenuLeftHold();
Menu->OnMenuRight();
Menu->OnMenuRightHold();
Menu->OnMenuSelected();
Menu->OnMenuBack();
Menu->RequestHighlight(MenuItem);
Menu->RemoveHighlight(MenuItem);
Menu->AddMenuItem(MenuItem);
}