Most is right now.
You shouldn’t really need an interface. Blueprints are built to be able to communicate with each other directly. You just need to know how to call them. One possible approach would be:
I made a new Class Blueprint called ScoreHolder. It has a Score variable (int), and a function named Increment Score. The graph for that function looks something like this:
From your pickup class, use a Begin Play event to trigger a Get All Actors of Class, set to look for your ScoreHolder class. This will store them in an array. Get the first (0) element of that array and cast it to a ScoreHolder class. This is required because that node doesn’t know what’s in there by itself. Take the output of that and store it into a new variable with a type of ScoreHolder.
Still with me?
Then you can just use that variable to call your Increment Score function whenever you like. The graph for my (not quite a) pickup class looks like this:
When I do this I get a steady count of 1…2…3…etc.
Hope this helps!