美文网首页
Unity Behavior Tree的使用

Unity Behavior Tree的使用

作者: 凛冽_f143 | 来源:发表于2020-04-28 15:54 被阅读0次

先展示下各个用法组件

Sequence 与 遍历下面所有字节点,一直到false,主节点返回flase

除非全部为true 住节点返回success

Selector

类似||,只要一个子节点为true,主节点为success

Parallel 类似 Squence但是不按顺序来

Parallel Selector 按照优先级遍历字节点

只要有一个子节点为true 主节点为success

Random Selector 随机选择一个字节点

选中的节点返回为true 主节点就是success

Random Sequence 类似第一Squence个

只不过是随机遍历的

Selector Evaluator 从优先级低到高遍历节点

一直到为true的子节点,如果都是false则返回failure

Conditionals 判断条件

Random Probability 随机值返回

Compare Field Value 对比value是否相等

Has Received Event(是否接收到事件)

Decorators(修饰器)节点

这种节点的功能是用来包装另一个节点 (只能有一个子节点)

可以修改子节点的行为,子节点发success ,用这个可以反过来处理

Conditional Evaluator (条件节点的评估) 装饰节点

1:reevaluate:条件节点是否每帧都重新评估

2:conditionalTask 要被评估的条件节点,如果被评估的节点success,那么就运行,如果failure就返回,只评估一次

Interrupt(打断)装饰

触发这个,则打断下方所有子节点,如果没打断,则返回子节点的结果

Inverter(取反)装饰节点

把得到的结果取反发给上层

Repeater(重复/循环)装饰节点

子节点为true就一直循环,直到返回failure

Return Failure (返回失败)装饰节点

如果子节点不是running,则返回failure

Return Success(返回正确)装饰节点

是success或者failure则返回success

Until Success(直到成功)装饰节点

同上,反之

是running则返回running

Task Guard(任务守卫)装饰节点

相当于多线程的Lock,并行的时候会先后触发,而不是一起触发

Until Failure(直到失败)装饰节点

直到子节点返回failure,不然就一直执行子节点 类似Repeater

举个例子

举个栗子

Selector会判断下面三个条件脚本下面的  public override TaskStatus OverrideStatus(TaskStatus stat)的返回值(是继承Composite,如果继承Action 就是看OnUpdate的返回值)

如果为 1为failure  则执行2, 2为Failure则执行3...   只要有一个为true 主节点为true

不过即便1为Failure, 1下面的分支还是会进去判断

此外自定义的方块可以继承创建的主类别  比如Action 以及 Composite那四个

想在自定义的类别里实现Selector的功能的话,进去复制到自己的脚本即可


关于数值

可以自己定义静态类,或者其他脚本获取

插件带的共享的值

添加全局变量

添加名称,选择类型,最后点击ADD

例如我下面的index就是自己添加的

但是还是需要在每一个块里面获取到挂在面板上的  BehaviorTree脚本  

就是 behaviorTree = GetComponent<BehaviorTree>(); 这样的...

然后才能在各个类里

 var index = behaviorTree.GetVariable("index");

注意Index的类型是ShardVariable 需要转换

behaviour = gameObject.GetComponent<BehaviorTree>();

        var index = behaviour.GetVariable("index");   //获取

        Debug.Log("index" + index);

        int ind = 2;

        behaviour.SetVariable("index", (SharedInt)ind); //保存

        index = behaviour.GetVariable("index");

        Debug.Log("index" + index); //确认数值被替换

此外

四种Above类型的说明

面板上的IsInstant可以设置暂停调用 


关于脚本

public可以在点击块后,在左边窗口的Inspector里找到变量

[TaskDescription("文本")] 在Class上方加入这个,可以有块的说明文本

相关文章

  • Unity Behavior Tree的使用

    先展示下各个用法组件 Sequence 与 遍历下面所有字节点,一直到false,主节点返回flase 除非全部为...

  • Unity Editor Node 各种连线工具

    群友提供开源工具,避免无谓造轮子 排名不分先后,纯当笔记记录 fluid-behavior-tree unity_...

  • Unity的Behavior Designer行为树插件性能优化

    Behavior Designer插件 Behavior Designer是Unity的一个行为树插件,提供了强大...

  • 【Unity】学习使用Behavior Designer

    为了制作一个简单的怪物AI(回合制为什么也要用行为树啊啊啊啊啊),今天要被迫学习一波Behavior De...

  • Behavior Tree(C#)

    行为树框架 参考资料:1.https://zhuanlan.zhihu.com/p/19890016?refer=...

  • 行为树(Behavior Tree)

    通过一个例子来介绍一下行为树的基本概念,会比较容易理解,看下图 这是我们为一个士兵定义的一颗行为树(可以先不管这些...

  • 行为树(behavior tree)

    简单解释一下这颗行为树的功能。unreal的行为树的执行流是从上到下,从左到右,每个节点执行之后都会有相应的返回值...

  • 深入理解CoordinatorLayout.Behavior

    要研究的几个问题 一、Behavior是什么?为什么要用Behavior?二、怎么使用Behavior?三、从源码...

  • Behavior使用

    一、CoordinatorLayout CoordinatorLayout的主要功能是协调内部各个子控件直接的状态...

  • Behavior的使用

    Behavior Behavior将某些特定的功能从某个特定的控件中解耦出来,重用性高 利用behavior实现以...

网友评论

      本文标题:Unity Behavior Tree的使用

      本文链接:https://www.haomeiwen.com/subject/lppjmftx.html