Workaround for UE-173626?

I’ve been trying to get worldspace UI working, but no matter what I did I could only click buttons once, after which they got stuck in the hover state. I’ve spent the last week trying to understand what I was doing wrong. I finally narrowed the problem down to the fact that the input was completing even though I was still holding the button down, which lead me to search unreal engine "enhanced input" "press pointer key" as a last desperate attempt to figure this out.

Turns out, it’s a bug. Like, for real, wtf. How is it only scheduled for fixing in 5.2?? As far as I can see, it’s a 100% blocker for any worldspace UI interactions. That sounds like a pretty ■■■■ critical bug to me and should be a high-priority hotfix.

I’m new to UE (not game engines generally) but I can’t think of a way around it. How is everyone else getting around this issue?

The issue you are describing, where the input completes even though you are still holding the button down, is indeed a known bug in Unreal Engine 5.1 related to the Enhanced Input System (EIS). This bug can cause problems with worldspace UI interactions, as you have experienced. Unfortunately, this bug is scheduled to be fixed in version 5.2 of the engine.

As you’ve pointed out, this bug is a 100% blocker for any worldspace UI interactions. In the meantime, there are a few ways to work around this issue:

  • One possible workaround is to use the traditional input system instead of the Enhanced Input System. This can be done by disabling the “Use Enhanced Input System” option in the Project Settings.
  • Another workaround is to use the “Press Pointer Key” node instead of the “Pressed” node in your Blueprint logic. This node allows you to check if the button is being pressed but also check if the button is being held down.
  • You can also use a custom C++ code to handle the button press events, and monitor the input state by yourself, to check if the button is being pressed or held.

It’s worth noting that these workarounds may not be suitable for all projects, and you might need to adjust your design accordingly.

I hope this is somewhat helpful until the bug is resolved.

Edit: I just came up with another alternative; once they fix the bug, you can view the changes and update the code yourself for the current engine you are on and thus allowing you to continue before the final update is released.

The ticket says the issue affects both Enhanced Input and the old deprecated input, so I don’t know that there is a workaround. Or rather, it’s maybe possible that I could check for keys currently being held and count them as released if they stop being held for a frame, but that’s very tedious, and is precisely the job of any input system.

I’m just really confused how such a critical bug can be ignored for so long. I’m unable to believe that there aren’t tonnes of people working on games using in-world UI in UE, now unable to use 5.1. Do people just silently accept bugs like this? I’m starting to second-guess my move from Godot :neutral_face:

Aha. I believe this is the primary ticket for this issue: Unreal Engine Issues and Bug Tracker (UE-166377)

According to this post (which the commenter has also posted in a few other relevant threads I found) the issue is due to this commit. The first comment matches my experience (that it’s flushing the input). I guess I will try to build from source so I can attempt to revert that change.

I notice the commit description mentions a Jira ticket with FORT in the name, so I guess the change was made because of a Fortnite issue. I’ve only played Fortnite once, back before it was a BR, so I can’t say whether they make use of in-world UI elements and WidgetInteraction components.