Theres a few issues I’ve noticed that seem to surround the PickupText widget and generally Set Position in Viewport with ConvertWorldLocationToScreenLocation.
The Set Alignment in Viewport node doesn’t seem to actually do anything except make the widget pop up in the corner of the screen the first time it shows up for a frame.
If a widget first shows up or moves off the screen it seems to enter some kind of sleep/hidden state and Event Tick stops firing. It doesn’t fire Event Destruct and it’s still on the viewport. Removing the Set Visibility doesn’t change anything.
It will stay hidden even if you move away from an item and it gets destructed. Which is the only part I could fix by setting the Event Construct to either part of the Event Tick chain.
I’ve had these issues since 4.7 or 4.8 when I first started using UE4, I was trying to fix them but then kind of forgot about them until recently.
I have a few questions for you that will help narrow down what issue it is that you are experiencing.
Quick questions:
Can you reproduce this issue in a clean project?
If so, could you provide a detailed list of steps in order to reproduce this issue on our end?
Could you provide screen shots of any other blueprints that may be involved with this issue?
Could you elaborate on what it is exactly that you are trying to accomplish?
I noticed that you mentioned pickup text. If you are trying to have text that hovers above an object in the world you could try using a widget component inside of the actor and then set the widget to screen space instead of world space.
Same issue after remaking the widget and overlap parts in a fresh first person blueprint project.
The easiest way to see the problem is to make the “Inventory UI with UMG” project from the learn tab of the launcher. Walk near one of the items on the ground and then move the camera until the widget is no longer visible and then look back. The widget will be gone.
Otherwise I made a first person blueprint project without start content and added an actor blueprint and a user widget. Dropped the actor blueprint into the level.
The widget is just a text block with a variable of the actor.
Walk into the overlap to make the widget appear and then move the camera until the widget is no longer visible and then look back. The widget will be gone.
I was basically trying to have tooltip widgets appear over the objects/items/weapons/whatever in the world when you went near them. Your suggestion of using a widget component instead seems to work much better and doesn’t have this issue. I actually forgot about those.
This is still a problem for anyone else trying to use that project as a base though.
After looking in to this issue, I was able to reproduce this issue on our end. The issue is caused by the widget blueprint no longer continuing to tick when it is off screen. I found that this can be worked around by making your own loop. I have provided an example below. I have also written up a report (UE-22374) and I have submitted it to the developers for further consideration. I will provide updates with any pertinent information as it becomes available. Thank you for your time and information.
Note: The comment says that it causes the image to be “removed”. What I mean by this is that the widget no longer continues to tick and that it does not come back.
I went ahead and double checked on this issue for updates. I found that this is working as intended. Tick is no longer called when the widget is no longer on screen. I hope that this information helps. Make it a great day
For the Inventory UI with UMG project here is a Screenshot of the “Pickuptext Widget Blueprint” of the way to solve the problem of the Pickuptext disappearing when off screen.
I thought I would mention that this solution doesn’t work for animations that are running in a widget. There’s no way to force them to update when they are offscreen/hidden.
Would really be useful to have an override flag here, otherwise I have to manually call tick on a lot of buttons through BP which will be very slow.
After taking a look at the report. It appears that this issue was closed because this is working as intended. This would be why you are seeing the same results in 4.18. I hope that this information helps.