I’ve got two blueprints that I can just about understand. One is 3d Widget menu blueprint with buttons that I copied from a tutorial. In the tutorial the one of the buttons is linked with an ‘apply radial force’ event in the level as seen below:
The second is an asset switching blueprint that allows you to switch the visibility of 2 different assets - by pressing the grip button on a motion controller - as long as the character is overlapping with a box collision, shown below:
Once I solved the problem similar to that by simply using event dispatchers. It is an universal way of delivering events from anywhere to anyone. If you are not familiar with event dispatchers, look it up in youtube. There are plenty of videos about it.
To do that you will need to create an event dispatcher in a common class that everyone has an access to, for example, Game Mode (for single player) or Game Instance. Let’s say you will use game mode. Then from your widget you get game mode, cast it to your game mode and call a function that will dispatch that event to all subscribers. Now, in your actor’s class where you handle Grip buttons, in begin play call bind event to dispatcher from your game mode and assign an event to it. And there you go, you have a reliable communication between UMG and any actor. The same way you can deliver events from actors to level blueprints.
Thanks very much for your answer. Because Im very new to blueprints there is a lot I am unsure of…
“Now, in your actor’s class where you handle Grip buttons, in begin play call bind event to dispatcher from your game mode and assign an event to it.”
What ‘Event’ is this referring to - would it be the multigate itself? When I drag a link from the Event socket, controller-inputs seem to be the only options available to me.
Would it be possible for you to illustrate this solution (I understand if you don’t have the time to). I no longer want the motion controller buttons to trigger the event - just the finger tip coming into contact with the menu button as can be seen in the first image I posted.