Description

Normally if you have a property in your state tree instance data of the input property(Category = Input), when you compile the state tree, you will get errors if the property does not have a binding.

However, if you have a struct property, and within the struct is a Category = Input property, the compile process will not validate that bindings exist for these properties.

Expectation: All Category = Input, even nested ones, would be validated

For example:

// Property inside a task instance data  
// Provides ability priority groups  
UPROPERTY(EditAnywhere, meta=(TitleProperty=Ability))  
TArray<FExecuteAbilityPriority> AbilityPriorities;  

USTRUCT(BlueprintType)  
struct FExecuteAbilityPriority  
{  
    GENERATED_USTRUCT_BODY()  

    UPROPERTY(EditAnywhere, meta = (Categories = "Ability"))  
    FGameplayTag Ability;  

// is not validated for a binding  
    UPROPERTY(VisibleAnywhere, Category = Input)  
    TStateTreePropertyRef<FGameBehaviorDefinition> RuntimeAbility;  
};  

Steps to Reproduce

1. Create class or struct containing variables marked with Input as the category
2. Create new StateTree task that has an array of the above class/struct
3. Add task to a StateTree state
4. Add element to array for task
5. Do NOT bind anything to the variables marked as Input
6. Compile the StateTree asset

Expected Result

The compilation fails with an error that the input variable of the array element is not bound to anything

Actual Result

Asset compiles successfully with no warning or error.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-348380 in the post.

0
Login to Vote

Unresolved
ComponentUE - AI - StateTree
Affects Versions5.6
Target Fix5.8
CreatedOct 10, 2025
UpdatedOct 16, 2025
View Jira Issue