Hi,
I'm have a node in my main behavior tree that, when executed, executes this:
var comp = pawn.GetComponent<BehaviorTree>();
comp.DisableBehavior();
comp.ExternalBehavior = externalBehavior;
comp.EnableBehavior();
This externalBehavior object is constructed like this before being shoved into a Queue:
public ExternalBehaviorTree BehaviorTree;
// ...
var tree = Instantiate(BehaviorTree);
tree.Init();
tree.SetVariableValue("location", gameObject);
// add tree to Queue
And this seems to work, but it throws an error:
NullReferenceException: Object reference not set to an instance of an object
BehaviorDesigner.Runtime.BehaviorManager.RunParentTask (BehaviorDesigner.Runtime.BehaviorManager+BehaviorTree behaviorTree, System.Int32 taskIndex, System.Int32& stackIndex, BehaviorDesigner.Runtime.Tasks.TaskStatus status) (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.RunTask (BehaviorDesigner.Runtime.BehaviorManager+BehaviorTree behaviorTree, System.Int32 taskIndex, System.Int32 stackIndex, BehaviorDesigner.Runtime.Tasks.TaskStatus previousStatus) (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.RunParentTask (BehaviorDesigner.Runtime.BehaviorManager+BehaviorTree behaviorTree, System.Int32 taskIndex, System.Int32& stackIndex, BehaviorDesigner.Runtime.Tasks.TaskStatus status) (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.RunTask (BehaviorDesigner.Runtime.BehaviorManager+BehaviorTree behaviorTree, System.Int32 taskIndex, System.Int32 stackIndex, BehaviorDesigner.Runtime.Tasks.TaskStatus previousStatus) (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.Tick (BehaviorDesigner.Runtime.BehaviorManager+BehaviorTree behaviorTree) (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.Tick () (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.Update () (at <1cb7df59e12f495fa3a64118298c7b21>:0)
What am I doing wrong?
I'm have a node in my main behavior tree that, when executed, executes this:
var comp = pawn.GetComponent<BehaviorTree>();
comp.DisableBehavior();
comp.ExternalBehavior = externalBehavior;
comp.EnableBehavior();
This externalBehavior object is constructed like this before being shoved into a Queue:
public ExternalBehaviorTree BehaviorTree;
// ...
var tree = Instantiate(BehaviorTree);
tree.Init();
tree.SetVariableValue("location", gameObject);
// add tree to Queue
And this seems to work, but it throws an error:
NullReferenceException: Object reference not set to an instance of an object
BehaviorDesigner.Runtime.BehaviorManager.RunParentTask (BehaviorDesigner.Runtime.BehaviorManager+BehaviorTree behaviorTree, System.Int32 taskIndex, System.Int32& stackIndex, BehaviorDesigner.Runtime.Tasks.TaskStatus status) (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.RunTask (BehaviorDesigner.Runtime.BehaviorManager+BehaviorTree behaviorTree, System.Int32 taskIndex, System.Int32 stackIndex, BehaviorDesigner.Runtime.Tasks.TaskStatus previousStatus) (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.RunParentTask (BehaviorDesigner.Runtime.BehaviorManager+BehaviorTree behaviorTree, System.Int32 taskIndex, System.Int32& stackIndex, BehaviorDesigner.Runtime.Tasks.TaskStatus status) (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.RunTask (BehaviorDesigner.Runtime.BehaviorManager+BehaviorTree behaviorTree, System.Int32 taskIndex, System.Int32 stackIndex, BehaviorDesigner.Runtime.Tasks.TaskStatus previousStatus) (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.Tick (BehaviorDesigner.Runtime.BehaviorManager+BehaviorTree behaviorTree) (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.Tick () (at <1cb7df59e12f495fa3a64118298c7b21>:0)
BehaviorDesigner.Runtime.BehaviorManager.Update () (at <1cb7df59e12f495fa3a64118298c7b21>:0)
What am I doing wrong?