UMG Navigation System Poorly Suited for Gamepad?

Hey folks,

I’m running into a lot of issues using a gamepad with UMG’s navigation system.

My main incentive for using the system is the ability to navigate between “Focusable” buttons based on the layout without any custom logic. That part works great, which is why I’ve been so frustrated by the host of other issues.

  • It seems there’s no way to simply “GetFocusedWidget” without constantly iterating over every Widget and checking if HasFocus is true. This would be a pain to maintain for complicated or dynamic menus and I’m concerned about the performance cost.

  • AFAIK, there’s no way to prevent Gamepad Face Button Bottom triggering click events on the focused widget. This makes it impossible to have different behavior for gamepad and mouse (i.e. use OnPressed for gamepad, OnClicked for mouse.)

  • OnPressed and OnClicked are handled in a way that’s inconsistent with mouse logic. Holding the gamepad button and then changing focus will immediately call OnPressed on the newly focused button and OnClicked when you release the button. (Mouse clicks and presses must start and end on the same button.)

EDIT: I found a bug ticket for this behavior (please vote!) Unreal Engine Issues and Bug Tracker (UE-45405)

  • Using Navigation takes over Tab key input, so Tab can’t be used to dismiss a menu.

  • No way to change directional input speed.

Has anyone found solutions for these issues? If I could use the navigation logic and disable all the special input logic that comes with it, I would be happy to handle the inputs on my own, but that doesn’t seem to be an option.

I am too stumbling with this, really frustrating.

That’s really unfortunate. :frowning:

I’m wondering if Epic has any ETA for improving UMG gamepad support.

My dilemma at this point is I don’t want to spend a lot of time rolling my own solution if it will be fixed in the next few months.

UMG navigation has been like this for years now AFAIK

I have found this to be really annoying as well. It would make sense that if UE is built for consoles as well than the UI would have a simple approch to controller navigation.

I think console AAA titles all use scaleform or some other middleware UI package?

Anyway, I just began looking into this and one of the first things I found was a rather convoluted way to use input actions in UI widgets:

For you in this thread who are more experienced that me, is that an alternative that improves things at all?

https://answers.unrealengine.com/questions/917834/view.html

I am also having this issue. This is a major issue.

It doesn’t, see my posts:

Widget input: It SMELLS - #4 by Roy_Wierer.Seda145
Widget input bubbling for InputComponent->BindAction?

UE5.1.1

Having an input component on UserWidgets is useless in the first place because all input is routed and processed through an entirely different system, which you use by overriding a widget’s OnKeyDown and other related methods. If you’d use BindInputAction on an input component you lose the routing, prioritization, handling logic + that it doesn’t execute in the playercontroller’s input mode UI.

Trust me I’ve been trying to unfck this for way longer than I should have.