[4.6] 3d UMG panels aren't catching clicks from client on a multiplayer setup
I'm working on a little setup of a card table with some 3D UMG panel components with buttons on them in a multiplayer setting. The listen server has no issues going into a UI input mode and clicking the buttons in the world on the 3d UMG components and making the stuff happen. With a client who joined the listen server, when I go into the UI input mode and try to click the button, nothing happens. The buttons doesn't go into the hover states or anything.
I would guess this perhaps has to do with the 3d UMG panels running on the server and the UI input mode (or specifically, the UI + Game input mode in this case) is likely only catching clicks on the client side.
Is there a way to get my client side clicks to interact with the 3d UMG panel components on a server? Or is this feature just not implemented yet?
I know the 3D UMG panels are still experimental, but I am really loving the possibilities of these things and am anxious to put them to good use.
asked Dec 05 '14 at 06:22 AM in Bug Reports
As a temporary solution, you can try adding it to the client's viewport. It would then start working and update the changes on both the viewport and 3D versions.
answered Apr 07 '15 at 09:53 PM
I was able to reproduce the issue that you described above. Thank you for your information and time. I have written a report ( UE-6411) and I have submitted it to the developers for further consideration. I will provide updates with any pertinent information as it becomes available.
answered Dec 08 '14 at 09:54 PM
Rudy Q ♦♦ STAFF
Any updates on this? Still broken on UE 4.17.
answered Nov 19 '17 at 10:24 PM
I just discovered and tested a quick solution for the Click issue on UButtons in multiplayer VR environment.
Instead of using "OnClicked", use "OnReleased".
E.g.: replace: materialSelectionBtn->OnClicked.AddDynamic(this, &AInteractableActorMenu::OnBtnChangeMaterialClick); with materialSelectionBtn->OnReleased.AddDynamic(this, &AInteractableActorMenu::OnBtnChangeMaterialReleased);
Note: Same thing applies for blueprints (OnClicked doesn't work, OnReleased works).
Note: Still didn't find a solution for "OnHovered On/Off" which are triggered on each tick even on cursor being still on button.
UE4.19 - Multiplayer VR, menu system:
1 -- Bug with Click --
Description: click is not triggered on any client when more then one client is present in the game
[WORKS] when testing in multiplayer environment with one dedicated machine for dedicated server and one dedicated machine for a client
[DOESN'T WORK] when launching a second client
Note: if one client leaves the game and remains just another one client, the CLICK starts working properly
Hack/Workaround: Fortunately the HoveredOn/Off functionality is triggered, so I know which widget is currently hoveredOn. I trigger the "click" functionality directly from the controller, without relying on "mouse left click", and do stuff related to the widget.
Unfortunately: HoveredOn/Off functionality stops working normally if more than one client is connected to the game.
2 -- Bug with HoveredOn/Off --
Description: HoveredOn and HoveredOff events are triggered one after another on each Tick, when more than one client is connected to the server, even when the cursor doesn't move and is always on the button.
So HoveredOn basically works like "OnColliding".
The good news is that at least HoveredOn starts being triggered on hover-on and stops being triggered on hover-off. The bad news is that you really never know when hover-off happens, since HoveredOff is also triggered on every tick right after HoveredOn.
So I defined the true HoveredOff event.
Hack/Workaround: I have set the parent actor of this widget to check on each Tick if HoveredOn has been triggered. If HoveredOn is not triggerd for one Tick, on the second Tick I know for sure that we have a true HoveredOff event.
The cons of this solution is that I lose one Tick, but this is not crucial for me, since this is just a menu system with buttons. In addition, to cover the loosing of "One Tick", I could be using a preventive approach and calculating stuff on each tick, one tick before the "True HoveredOff" event, and then applying the calculations.
Follow this question
Once you sign in you will be able to subscribe for any updates here