In the following Behavior tree, I’m trying to test the functionality of an abortable Decorator that is only evaluated when a Blackboard value is changed, rather than on every tick.
My expected behavior is that when the tree hits the left-hand leaf node,
CheckBoolObservingBBKey will evaluate once, fail, and then not tick again until the 99999-second Wait Task finishes. You can see that in the implementation of
CheckBoolObservingBBKey I have
Check Condition only if Black Board Changes ticked to true, and that it has a public BlackBoardKeySelector parameter
Arbitrary BB Key that’s hooked up to
KeyThatNeverChanges – a blackboard bool which is set to false in the AIController’s BeginPlay function, and not ever changed again.
Unfortunately, the behavior I’m experiencing is that the decorator is being evaluated every tick (as evidenced by the breakpoint I have in there), regardless of the Only if Blackboard Changes flag.
For various performance reasons, I would like the ability to control when my decorators tick as much as possible. Is this an engine bug, or am I misunderstanding how this should work?