Aye, the power comes from the fact that you do not need a reference once they’ve been registered. You can register now, Once, pay the price and keep calling later for free.
Sending an interface message to 100k actors is very expensive. Dispatching is cheap and you no longer need a reference.
the real shortcoming I’ve found is that they only work on that BP.
Nah, you can register from any actor to any other actor - one of the most powerful features. And it does not need to be an actor, it can be a widget → component communication.
You often end up with managing classes that bind unrelated actors without those actors ever knowing that the other one exists; +1 for decoupling.
- actor component in some actor:
- actor component in another actor:
- the actor component A can now talk (call a dispatcher) to B:
And if after 30 minutes of gameplay one of the actors gets destroyed… nothing will happen.
Another example:
I have 400 trees in the scene, I need the player controller to know when 3 very specific trees get chopped down:
You will need / use all 3 methods of comms anyway + inheritance. Choose the best tool for the job at hand.