塔防游戏的技术总结--行为树编辑器

Behavior3 Editor基本功能介绍。

Projects->New Project,输入一个项目名称,点击OK,成功创建一个project。


上页签栏基本的操作:

保存,Export,Import,新建tree,node,复制,移除,自动对齐等基本操作。

左页签栏:

Composites组合节点:连接多个子节点,用于决策行为树走向。
Decorators装饰节点:连接一个子节点,用于修饰子节点的返回值。
Actions行为节点:执行具体的行为。
Conditions条件节点:用于条件判断,并返回不同的值。
上面四种节点都是Node,大部分功能是类似的,略做了区分。

Behavior3
Composites衍生的有:
1.Sequence节点:顺序执行子节点,当子节点返回b3.SUCCESS,直接访问下一个子节点;所有子节点都返回b3.SUCCESS,Sequence节点才返回b3.SUCCESS;当有子节点返回b3.FAILURE,则后续子节点不再执行,Sequence节点直接返回b3.FAILURE,类似于逻辑与的概念。

2.Priority节点:就是Selector节点,选择执行子节点,当子节点返回b3.FAILURE,访问下一个子节点,当所有子节点都返回b3.FAILURE,Priority节点返回b3.FAILURE;当有子节点返回b3.SUCCESS,则后续子节点不再执行,Priority节点直接返回b3.SUCCESS,类似于逻辑或的概念。

3.MemSequence节点的逻辑和Sequence一样,这里涉及到一个b3.RUNNING的返回值。

子节点并不知道执行结果是成功还是失败,得晚一点才能告诉你,那如何处理这种情况呢?

Sequence节点,当它再次遍历子节点的时候,还是从第一个子节点开始遍历,MemSequence却会记住之前在Running的子节点,下次遍历的时候,直接从Running的那个子节点开始,这可以很方便的继续之前中断的逻辑决策。

4.MemPriority节点的逻辑和Priority一样,然后Running的概念和MemSequence一样。

Decorator衍生的有:
1.Repeator节点:重复执行子节点maxLoop次
2.RepeatUntilFailure节点:重复执行子节点直到子节点返回Faiilure
3.RepeatUntilSuccess节点:你懂的
4.Limiter节点:限制进入子节点的上限次数为maxLoop
5.Inverter节点:反转返回值
6.MaxTime节点:限制子节点可以执行的时间为maxTime毫秒

Action衍生的有:
1.Successder节点:返回b3.SUCCESS
2.Failer节点:返回b3.FAILURE
3.Error节点:返回b3.ERROR(调试用)
4.Runner节点:返回b3.RUNNING
5.Wait节点:等待milliseconds毫秒


Composite可以有多个子节点,Decorator只有一个子节点,Action和Condition没有子节点。

所以实际上Action和Condition可以归为一类,但是理念把他们分开了。该节点返回什么值取决于逻辑做了什么。

一般情况下,每个节点都会返回一个状态,父节点接收到之后再做其相关的逻辑。

所以上面四种类型的节点,都可以New出新的。编辑器的使用也就是在熟悉了上面四种节点的区别后,抽象创建出新的节点,维护这些节点;根据不同的情况创建新的tree,拖到中间的view中,通过连线,编辑出项目需要的tree,维护这些tree。

每个tree 都是从根节点开始的呦。


版权声明:本文为shiyulf原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。