参考NPBehave事件驱动行为树设计,使用Unity+UIToolkit的开发可视化编辑器。
- 事件驱动行为树执行流程
- 支持Unity可视化的行为树节点编辑,支持快速拖拽行为树复制,节点快速复制删除和撤销等操作
- 支持行为树运行时的状态变化可视化显示
- 支持配置单棵行为树是否循环执行,反之只执行一轮
- **支持4中打断方式(SELF,LOWER_PRIORITY,BOTH,LOWER_PRIORITY_IMMEDIATE_RESTART,IMMEDIATE_RESTART)
- 支持常规数据类型(int,float,string,bool等)的黑板数据
- 支持常规的黑板数据比较操作节点()
- 支持Unity挂载脚本(TBehaviourTree)的方式加载行为树数据运行
- 支持单棵行为树级别的暂停和继续,也支持所有行为树的暂停和继续
效果图:
- 支持行为树引用方式的重用而非复制的方式(这种方式修改原树已经复制的树数据无法跟着变化导致重用性效率大打折扣)
- 事件驱动行为树相比传统行为树最大的优势就是树更新的开销,前者基于定时器可以做到通知打断+子节点通知父节点运行结果的单向执行(不用每帧从根节点开始),后者是每次都从根节点开始的遍历执行,后者每帧都会从根节点再走一遍流程到之前的节点继续运行(同时打断设计不好设计成基于定时器减少更新频率)
- UIElement的GraphView把逻辑节点(Node)和边(Edge)数据和节点(NodeView)和边(NodeView)显示抽象分离的很好,可以高度自由的编写显示节点(NodeView)和边(EdgeView)