How do you call a level function from your PlayerController given that it's dynamcially instantiated?

You can assign event on dispacher call instad of using dispacher as event itselt.

Get player controller → cast it to your controller class → Assign event on (dispacher name) , this way will give u event when this dispacher will call, no mather if it will be now or later on.