Unity 行为树-节点间数据传递
一、引言
有以下小场景:
节点A:发现了 敌人。 节点B:追逐敌人。
对于同一个敌人物体,节点AB之间是如何传递数据 的呢?
二、数据传递的3种方式
1.共享变量:面板中创建局部或者全局的共享变量Temp,然后节点AB都和Temp交换数据就行。
2.共享变量:A在需要的地方保存值 behaviorTree.SetVariable("MyVariable",Value); B在需要的地方取值 behaviorTree.GetVariable("MyVariable");
3.Task引用:这是本博客重点讲解的。
关于方法1 和 方法2,请戳我另一篇博客,走你👉
下面讲解方法3,Task引用。
三、Task引用
其实task引用用起来还是比较简单的。好比 一个类引用另一个类的数据。
现在根据引言的需求:
节点A发现了敌人,肯定有变量来存储看见的敌人对象。我们假设这个变量为:GameObject obj_enemy;
节点B需要追逐这个敌人。可以在B的脚本里,定义节点A 的 类对象:Public AI_CanSeeObj seeObj;
这个时候,点击节点B,看面板,就会发现,多了个 seeObj,然后绑定 点击Select,再点击节点A。 就成功绑定了~
此时,就可以在节点B 的脚本里面,获得敌人的对象了:seeObj.obj_enemy。 不仅如此,还可以随便使用节点A 的所有数据了 😃