Hi, I’m trying to understand the expected behavior of Animation Layer Interfaces with inherited Animation Blueprints.
My setup is like this:
ALI_OverlayPose
└─ OverlayPose layer
ABP_OverlayBase
├─ Parent: AnimInstance
├─ Implements: ALI_OverlayPose
└─ OverlayPose layer
└─ Base overlay state machine
ABP_SwordOverlay
├─ Parent: ABP_OverlayBase
├─ Also uses / inherits ALI_OverlayPose
└─ I created a Sword-specific OverlayPose layer
└─ Sword-specific state machine
ABP_BowOverlay
├─ Parent: ABP_OverlayBase
├─ Also uses / inherits ALI_OverlayPose
└─ I created a Bow-specific OverlayPose layer
└─ Bow-specific state machine
In my character Animation Blueprint, I call Link Anim Class Layers and pass ABP_SwordOverlay or ABP_BowOverlay depending on the equipped weapon.
I expected this:
Link Anim Class Layers → ABP_SwordOverlay
→ use ABP_SwordOverlay's OverlayPose layer
→ run the Sword-specific state machine
But what actually seems to happen is:
Link Anim Class Layers → ABP_SwordOverlay
→ the OverlayPose layer from ABP_OverlayBase still runs
→ the base overlay state machine is used instead of the Sword-specific one
So my question is:
Can a child Animation Blueprint override an Animation Layer Interface implementation from its parent Animation Blueprint?
Or is this not supported / not intended behavior?
From what I’m seeing, it looks like if the parent AnimBP already implements the Animation Layer Interface, the child AnimBP inherits that layer implementation, and creating a layer with the same interface in the child does not behave like overriding a normal Blueprint function.
Is the correct architecture to avoid implementing the Animation Layer Interface in the common base AnimBP, and instead do something like this?
ABP_OverlayCommonBase
├─ Parent: AnimInstance
├─ Does NOT implement ALI_OverlayPose
├─ Common variables
├─ Common functions
└─ Common update logic only
ABP_SwordOverlay
├─ Parent: ABP_OverlayCommonBase
├─ Implements: ALI_OverlayPose
└─ OverlayPose
└─ Sword-specific state machine
ABP_BowOverlay
├─ Parent: ABP_OverlayCommonBase
├─ Implements: ALI_OverlayPose
└─ OverlayPose
└─ Bow-specific state machine
In other words, should the common base AnimBP avoid implementing the Animation Layer Interface if I want each weapon-specific AnimBP to have its own completely different state machine?