My 3D Widget Interaction component does not work anymore.

  • check the Widget Component’s Receive Hardware Input flag; that’s assuming the widget lives in the world space (rather than screen space)
  • check whether there is another widget on top that might be stealing focus (you can use Widget Reflector for this)
  • ensure you’re not switching to Game Only input mode (or switching too early)
1 Like

So that is exactly the case. A while ago, I made an interactive 3D widget for a Chest Inventory I have in my game and worked a charm. I left it and moved to continue making my game until I had to use a 3D widget again. It didn’t work, and as I realized, my Chest Inventory didn’t either.

I tried making a 3D widget in a clean project, and it works. I reverted everything I had changed by looking at the clean project. And beyond that, I also tried everything. Possession number, the way the player spawns in the level, different numbers in user index, staying away from coffee, and nothing really worked. I am desperate, as my game is in a pretty advanced state to just scrap it and start over, a practice that should never be the solution to anything.

Please somebody help me? Whatever it is that got me stuck, it’s not within the Widget Interaction settings…

The Input flag is unchecked, just like in the clean project that the 3D Widget works. I set the Widget’s Z Order to 1000 as I remember I may have tweaked it in some widgets, but certainly not in such a high number. As for the Game Mode, instead of trying anything in the big project, I went to the clean one and set the Mode to Game Only on Begin Play and the 3D Widget STILL worked. I am still looking into it, although I don’t know what more I can do.

Ok, I did that now. I admit I really don’t know how to read it, I see nothing familiar in those lists, but what’s for sure is, nothing changes on the Widget Reflector window when I hover over my 3D widget. :frowning:

I made a video, I hope it helps!

Here are the component and actor.

I set the Widget’s Z Order to 1000 as
I remember I may have tweaked it in
some widgets

Afair, the widgets created by widget component live in a separate layer, the Z order does not affect them the same way. I might be wrong here, though.

Do try the widget reflector: Window → Developer Tools → Widget Reflector

Run the project, hit the highlighted button in the upper left and then mouse over the viewport, the light grey horizontal highlight will show what you’re mousing over. Saved my bacon many times.

2 Likes

nothing changes on the Widget
Reflector window when I hover over my
3D widget.

Can you drop a screenshot of that - when the cursor is over the element that you’re supposed to interact with.


Generally speaking you should be getting at least the name of the actor that owns the component; or the exact name of the widget element providing it’s set to something else than Not Hit-Testable.

You can also double check the 2d widget hierarchy to ensure that at least 1 element has its Visibility set to Visible. Grasping at straws here a bit.

So you’re hitting the viewport directly, meaning no other rogue widgets are in the way - at least we’ve eliminated that. And the widget component is drawing in world space (now that I’ve seen it) - meaning widget reflector will be useless from now on; still, it served its purpose.

I never worked with Widget Interaction component so I must take your word for it being set up correctly here.

How are the collision settings on the Widget Component? By default it’s UI, blocking Visibility.

We can’t see the collision settings here, they’re a tad lower, just below Physics tab.

[edit]

Collision set to UI.

got it


I got it to work by having the Widget Component blocking Visibility and Tracing for Visibility in the Widget Interaction.

Can you confirm that the 2d widget hierarchy has a clear path. For example:

  • [root] not hit-testable (self only)
  • [canvas] not hit-testable (self only)
  • [button] visible
    - [text block] not hit-testable (self and all children)

[edit] - corrected the last one

My bad, I made a small mistake, the text block should be not hit testable, obviously - you want to interact with the button, not the text:

  • [root] not hit-testable (self only)
  • [canvas] not hit-testable (self only)
  • [button] visible
    - [text block] not hit-testable (self and all children)

Can you confirm the elements above the button are set to Not Hit-Testable (self only)?

Seems to be working rather well out of the box:

295471-annotation-2020-01-18-025815.png

And it’s only your project that shows this unwanted behaviour? When you drop it into a clean project the interaction works ok?

The root and the canvas might as well be Visible, does not matter here much for as long as they’re not blocking tunnelling by being Not Hit-Testable (self and all children)

Nothing else comes to mind at this point. A checklist in case something else was missed:

  • block Visibility channel on the Widget Component and set collision to at least Query Only (UI mode defaults to this)
  • make sure the Interaction Distance is long enough and Enable Hit Testing is true
  • ensure the 2d widget elements can tunnel through and the interactive element (the button) is Visible

If I can think of anything else that might be interfering with this, I’ll update the thread.

Perhaps you could delete the widget component and its widget, create brand new ones and then try again. The almost proverbial switching something off & on works surprisingly well at times. And it’s surely easier than redoing the entire project.

Collision set to UI.

Collision set to UI, and here’s a photo of the options for Text Block. It doesn’t work when it’s in visible or the Not Hit Self and Children. As you see there is no option for Hit-Testable(self and all children). I have done exactly what you suggest, and all I can think of now is the numerous complaints I read from various people about the 3D widget system. I guess I’ll have to change my gameplay after all, even though 3D widgets are crucial. If it was something fixable I guess we would have nailed it by now. Sad day today for my game!

I even removed the text completely, and still the same. The 3D widget is only visible to our eyes…

Yes, that is exactly how things are, minus the now-deleted text block. Button visible, root and canvas not-hit.

Yes, it works right away on a clean project! First thing I tested.

I tried that too. I believe it’s either broken in the first-person character, or the whole project. I will test it with a new first-person character and see where that goes. I really can’t wrap my head around what could be the problem.

UPDATE: I made a NEW first-person character, STILL the same behavior. Is it possible that any of the UI widgets may be blocking the 3D widget? I believe that is impossible and that’s why we have the interaction component.