Quick answer: Unreal Blueprint CallFunctionByName not calling the most-derived override? Lookup uses static UFunction; overrides need ProcessEvent - use ExecuteUbergraph or proper virtual dispatch.
Base BP has Foo(); Derived BP overrides Foo(). CallFunctionByName('Foo') runs Base's version.
Use ProcessEvent
Object->ProcessEvent(Function, Parms);Virtual dispatch; correct override called.
Or use IInterface for polymorphism
Define interface; override per derived class. Execute_Foo dispatches correctly.
Avoid name-based dispatch
For polymorphic calls, type-based is safer. Names are convenient and brittle.
“Name-based function lookup is static. Polymorphism needs dynamic dispatch.”
If you find yourself using CallFunctionByName extensively, the design likely needs interfaces. Refactor; name-based dispatch is a smell.