The best way to pass variables(multiple) to BP on change

I am aiming for multiplayer(online), so it must be possible in feature to complement it with multiplayer functionality.

I have managed to pass my variables to BP using multicast delegates (My Code on the screenshot), and I am going to do the same thing for reloading and many other cases…
I think this is not the best way of doing it. AFAI can get I can not use getters as I need to output these data every time the variable changes (e.g. current ammo of my weapon, reload state and many others)

I have read about Events in C++ too, but I did not get if I can do the same thing with it as with multicast deletes.

Help me out please! how can I get the same results and if there’s a better way?

It would be nice to see some examples with code and BP if there’s any.

And it would be great to see some links for doc or other sources

[SPOILER]

[/SPOILER]

I do ask to advise anyone who can do this!
Thank you so much for looking into this!

Or it is better to use blueprint callable ufunction? which I can call in BP and assign new values for my widget?