Questions about event dispatchers in Unreal Engine

I want to understand the scope of the event dispatcher. I found in the official ue4 document that the event dispatcher section does not explain the area where the event dispatcher works.

Suppose I have a situation like:
I defined the blueprint actors A and B, A defined the event distributor Open the light, the event distributor will be called after the player interacts with A, and the event of turning on the light is bound to the event distributor in B.
Then I loaded two sub-levels X and Y in a large level; level X has an instance of A and B, named A1 and B1. Level Y has an instance of B, named B2 .

Finally, if I interact with A1 in this level, will both B1 and B2 execute the light-on event, or only B1 will execute the light-on event?
If both B1 and B2 will execute this event, how can I limit the event dispatcher so that A1 will only affect B1 and not B2 which is close in distance.

None of this will execute. Dispatchers work with instances. Unless you register the very instance, nothing will happen. You cannot bind a dispatcher to something that has yet to exist:

This will not work, for example. When this new actor gets destroyed, the event will not trigger.


[…] how can I limit the event dispatcher so that A1 will only affect B1 and not B2 which is close in distance.

  • either check the distance before binding the dispatchers, the instance that is too far will not get to bind in the first place
  • bind them all (because it might be easier) and check for distance when the delegate triggers the event in the light

Option A is better, ofc. Why register 1000 lights when you can only register the 10 that are nearby.


In short, no instance will receive a call unless you explicitly tell it to listen.