BehaviorManager.instance.Tick(behaviorTree); 卸载update里u3d直接卡死 = =
SharedVariable直接赋值会改变他的引用关系,必须用XXX.Value赋值 = =
两种自定义Task: Task 和 Parent Tasks
基础task流程 ( Conditional Task 和 Action Task )

Parent Tasks
// The maximum number of children a parent task can have. Will usually be 1 or int.MaxValuepublic virtual int MaxChildren();// Boolean value to determine if the current task is a parallel taskpublic virtual bool CanRunParallelChildren();// The index of the currently active childpublic virtual int CurrentChildIndex();// Boolean value to determine if the current task can executepublic virtual bool CanExecute();// Apply a decorator to the executed statuspublic virtual TaskStatus Decorate(TaskStatus status);// Notifies the parent task that the child has been executed and has a status of childStatuspublic virtual void OnChildExecuted(TaskStatus childStatus);// Notifies the parent task that the child at index childIndex has been executed and has a status of childStatuspublic virtual void OnChildExecuted(int childIndex, TaskStatus childStatus);// Notifies the task that the child has started to runpublic virtual void OnChildStarted();// Notifies the parallel task that the child at index childIndex has started to runpublic virtual void OnChildStarted(int childIndex);// Some parent tasks need to be able to override the status, such as parallel taskspublic virtual TaskStatus OverrideStatus(TaskStatus status);// The interrupt node will override the status if it has been interrupted.public virtual TaskStatus OverrideStatus();// Notifies the composite task that an conditional abort has been triggered and the child index should resetpublic virtual void OnConditionalAbort(int childIndex);
父节点基础类ParentTask派生出装饰节点Decorator
// The maximum number of children a parent task can have. Will usually be 1 or int.MaxValuepublic virtual int MaxChildren();// Boolean value to determine if the current task is a parallel taskpublic virtual bool CanRunParallelChildren();// The index of the currently active childpublic virtual int CurrentChildIndex();// Boolean value to determine if the current task can executepublic virtual bool CanExecute();// Apply a decorator to the executed statuspublic virtual TaskStatus Decorate(TaskStatus status);// Notifies the parent task that the child has been executed and has a status of childStatuspublic virtual void OnChildExecuted(TaskStatus childStatus);// Notifies the parent task that the child at index childIndex has been executed and has a status of childStatuspublic virtual void OnChildExecuted(int childIndex, TaskStatus childStatus);// Notifies the task that the child has started to runpublic virtual void OnChildStarted();// Notifies the parallel task that the child at index childIndex has started to runpublic virtual void OnChildStarted(int childIndex);// Some parent tasks need to be able to override the status, such as parallel taskspublic virtual TaskStatus OverrideStatus(TaskStatus status);// The interrupt node will override the status if it has been interrupted.public virtual TaskStatus OverrideStatus();// Notifies the composite task that an conditional abort has been triggered and the child index should resetpublic virtual void OnConditionalAbort(int childIndex);