No, it’s all from the various user widget classes from the screenshots above. None of them are of the same type, but sometimes I store them as “user widget” classes and sometimes I store them as the actual subclass.
It’s really hard to diagnose without seeing your whole setup. Basically, when you start to see the yellow pin, it means the blueprints know about each other in some way. Which means, you can’t be anonymous.
( Or at least, that’s what I think it means, I may have missed a subtlety somewhere… )
To be clear, just using a variable of class X is enough to screw it up. Because from the variable type, the calling blueprint already knows the internals of the other actor.
The references need to be as generic as possible to avoid this, just ‘actor’ or ‘widget’ etc…
Now we’re getting close!
Ok, so I made a repro project:
- I’m on board with the letter not appearing after the cast, but I still think that’s unfortunate Ux.
- I’m NOT on board with the letter not appearing in the class that implements the interface, because Unreal doesn’t even know what object I want to communicate with yet! Horrible Ux!
Again, this may be “technically correct” and developers may be used to ■■■■ like this, but this is confusing as hell to a beginner!
Left image. You’re casting, BOOM, null points. You know what kind of thing it is, you get the yellow dot. Also, I might add, if you know what it is why not just reach inside, and call the custom event?
In the example here, to construct it correctly, you have two BPs, ClassA and ClassB. You make the call from ClassA to ClassB, but you have to do without knowing you’re making the call on a ClassB.
In other words, your reference to the ClassB must be an actor reference, not a ClassB reference.
Because I wanted to be a good person and use interfaces in case I had to switch out that class in the future.
But ok, this is beating a dead horse now, I guess. Interfaces are anonymous, until they aren’t. Just like with browser cookies!
Thanks for the help everyone!
There is a point to using them, and not just pretending to be a ‘pro’
I had a nightmare bug in my game that produce crashes all over the place. Turns out, I had a nice big loop in the reference viewer ( classes pointing to other classes pointing to … ). The engine can do a lot to fix that, but eventually, it can’t handle it.
Because interfaces makes the connection anonymous, it broke the loop. All done…
I was wondered why this happen
Both work well