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 的所有数据了 😃 

 

 

 

 

posted @ 2018-10-31 20:33  激情1995  阅读(1212)  评论(0编辑  收藏  举报