Hi!
I have a property in c++ that should hold the behavior tree to use like this:
UPROPERTY(EditDefaultsOnly, Category = "MyAIController")
UBehaviorTree *BTAsset;
I inherit the class from a blueprint and assign the BTAsset
property a behavior tree from the editor. However when I run the code it’s null even though it should be assigned. Any ideas what may be causing this issue? Why is BTAsset
null even though it looks like it’s assigned in the editor property. The behavior tree seems to work if I run it directly from blueprint.
If it looks like assigned the it’s assigned
The problem might be the “when” of your code. Properties like that are being set after class’ constructor runs, so if you need to use properties’ values you need to wait at least for PostInitProperties
or PostLoad
.
Let me know if that was the case.
Cheers,
–mieszko
I forgot to mention that I use the asset in BeginPlay like this:
void AMyAIController::BeginPlay()
{
Super::BeginPlay();
RunBehaviorTree(BTAsset);
}
I checked the value after PostInitProperties
and PostLoad
but it’s still null.
I’ve just tried it using 4.8 prev 1 build and was not able to repro what you’re experiencing. And I know we’re using this setup in most of our projects so if it didn’t work we’d know.
Would you mind posting a striped-down version of your project so that I can investigate your setup?
Seems to be something specific to my project. Couldn’t reproduce this myself in another project were it worked perfectly. I will have to investigate this issue further. Is probably on my end then.
Thanks for the help!