I’ve noticed some weird behavior and I’m not sure if it’s a bug or a feature: Since UE5.0 it seems that functions from Blueprint interfaces are automatically overriden if you create a child class of an actor that implements the interface.
Simple example:
Create a new actor and name it “Parent”. Create an Integer variable in “Parent” and name it “MyIntegerVariable”
Create a new Blueprint Interface and within that interface create a function called “MyFunction”.
Give “MyFunction” an Integer ouptut and call it “MyIntegerOutput”
Implement the Interface in Actor “Parent”. Open the implemented Function and plug in “MyIntegerVariable” to the output of the function “MyIntegerOutput”.
Create a child class of “Parent” and call it “Child”. Open it.
You’ll notice that the function “MyFunction” in “Child” Actor is automatically overriden and empty in the child class.
Expected behavior (works in versions before 5.0): The function should not be overriden by default
This might not be the exact answer for the original post/question, but if a child BP is overriding one of its parent’s Interfaces, it’ll likely display as an empty function under “Functions.” If you select it and delete it, it should revert to being an Interface underneath “Interfaces,” inheriting its parent’s behavior. Double clicking on the interface will turn it into an overriding function.
The problem that I discovered was that I was clicking on the inherited interface function in the Child Class. That moved the inherited function from the Interfaces Group to the Blueprints Group, presumably so that it could be overridden.
And as you said, deleting that function from the Blueprints Groups sends it back to the Interfaces Group.
That initial behavior should either be disabled, or there should be a confirmation box alerting the user to a change in the function’s categorization.