I’m not sure how complex you want this to be, but an option would be to have a reference to your widget set on the player controller. When the widget is created, its BeginPlay should go to the Controller to get set into that variable.
Then, in your enemy base class event you can:
- Get Player Controller
- Cast to your controller with the widget variable
- Get the widget and call its event to trigger the UI update
Is this a single player game? Performance not really an issue? If so this setup is fine, but a networked game will need a more complex system to get the correct controller, and using a Dispatcher is possible but you need to Bind it to the Event using a reference. The way I’ve mentioned is an ok method, but in a large game you may want something more efficient.