You basically either do direct communication / interfaces, or delegate binding / event dispatchers in UE4. It only really plays a role in which way you do the binding, both of them are event based. The only listen based which updates on the tick that I know of by default in the engine is a widget binding, and even those aren’t recommended to be used.
Is there a particular way you handled interactions in your project?
I use an interface made in C++ with a couple of events, and I handle object highlighting / interaction signals through that. The objects themselves decide what happens once they’ve been interacted with.
I’d bind the other way around IF I had something like a big event, that needs multiple different actors behave in a certain way; like let’s say you have an alarm trigger - then an event dispatcher would handle that signal instead. The alarm sound would play, the lights would blink red, and the guards would change their AI state. It would be easier to handle the bindings that way, i.e. guard enters an area, and once he does, he is bound to the local alarm trigger delegate.