ControllerHUD - Enable Controller/Keyboard support for your Unreal Engine 4 UMG Widgets
ControllerHUD is designed to minimize the modifications needed to support existing HUD systems.
It is purely Blueprint based and does not require any C++ or re-parenting of existing widgets.
You can find videos demonstrating ControllerHUD here: https://www.youtube.com/watch?v=F-qB2QLReiQ
and here:
https://www.youtube.com/watch?v=RJxZnYm2vlM
Why should I use ControllerHUD instead of other available UI design systems?
You should not. ControllerHUD serves a different purpose and will most likely play nice with other systems. ControllerHUD adds Gamepad/Keyboard controls to a UI. Nothing more. Nothing less.
Am I restricted to rigid layouts like Grids and Vertical/Horizontal Panels?
No. They make live easier but ControllerHUD does work without them. Check ControllerHUDSkillBoardWidget for an example implementation of layout-less navigation.
Is ControllerHUD a Plug&Play solution?
Unfortunately not. It is not enough to download ControllerHUD, tick a checkbox to activate Gamepad/Keyboard controls and be done with it. But don't worry. Setting ControllerHUD up for a simple UI is a matter of minutes.
What do I have to do to make it work?
ControllerHUD consists of two components:
The ControllerHUDManagerComponent that will be added as a component to your PlayerController.
A BlueprintInterface that is used to enable communication between UMG widgets and the ControllerHUDManagerComponent.
Two things must be done by the developer: Relay input from the PlayerController to the ControllerHUDManagerComponent. Implement the ControllerHUDWidgetInterface in a UMG widget.
The latter requires maybe 20 mouse clicks to set up for a simple widget.
ControllerHUD contains:
- One ActorComponent for managing navigation and bookkeeping.
- One BlueprintInterface for interfacing UMG widgets with the ActorComponent.
- One tutorial widget that explains how to setup the system step by step.
- One futuristically themed 3D widget that shows how to implement a simple Inventory system. (Including material and textures.)
- One fantasy themed widget that shows how to implement something like the skill system interface of Final Fantasy X or Path of Exile. (Including textures)
- Five demo widgets that do not use custom graphical elements but demonstrate how to create different kinds of UI elements.
Limitations of ControllerHUD:
- Controller interacts with Buttons and Checkboxes (which is arguably a special kind of Button). If you need support for other UI elements, please contact me before purchasing ControllerHUD. There might be a way to implement what you need. But I cannot make any promises without knowing the details.
- ControllerHUD cannot trigger button's 'Click' events. This is not really a problem but the need to re-setup the 'onClick' binding for existing UIs might be annoying.
- GridPanels require a 'columns first' ordering of child widgets within the Panel. If your grids are filled 'rows first', you might need to to some reorganizing.
Check https://forums.unrealengine.com/showthread.php?127918-Gamepad-Keyboard-Controlled-UMG-HUD for support.
Version 0.3 Change Log:
- ControllerHUDManagerComponent now stores a reference 'ActiveUserWidget' to the UserWidget instance the currently focused button belongs to. If the currently focused button is not a child of a nested UserWidget, the reference is None.
- Buttons are only focusable when visible.