引言

  在代码里面动态的操作单颗行为树 以及 管理所有的行为树,也是一个很重要的事情。


一、操作单颗树

这是我们项目里面,一个敌人绑定了行为树,自动创建的behavior tree 脚本。

红框放大:

行为树组件包含以下几个属性:

当我们有需要的时候,如何代码操作这些变量呢?

(1)我们必须先找到要操作的树

找树的方法1:定义一个Public的 BehaviorTree tree = new BehaviorTree();,然后面板拖拽赋值。

找树的方法2:定义一个privarte的 BehaviorTree tree = new BehaviorTree();,然后通过GameObject的Find查找物体,然后获得物体上面的组件来得到的。

(2)代码操作该树

using BehaviorDesigner.Runtime.Tasks;//引用不可少

using BehaviorDesigner.Runtime;

public class Tree : MonoBehaviour {

public BehaviorTree tree = new BehaviorTree();

void Start () {

    tree.enabled = false;

    var a = tree.GetAllVariables();

    tree.StartWhenEnabled = false;

    var b = tree.FindTasksWithName("AI_Daze");

  }

}

上面代码只是简单的演示一下,可以操作行为树的数据。其实 面板截图里面的所有变量都可以操作,除此之外,tree还有很多的属性和方法都可以操作。


二、管理所有树

当行为树运行时,将会自动创建一个带有行为管理器组件的新游戏对象,并且该对象上面绑有 behavior manager组件。此组件管理你场景中所有的执行的行为树

你可以控制行为树的更新类型,以及更新时间等等

Update Interval:更新频率

  • Every Frame:每帧都更新行为树
  • Specify Seconds:定义个一个更新间隔时间
  • Manual:手动调用更新,选择这个后需要通过脚本来调用行为树的更新

Task Execution Type:任务执行类型

  • No Duplicates:不重复
  • Repeater Task:重复任务节点。如果设置成了5,那么每帧被执行5次

BehaviorManager.instance.Tick();
此外,如果你想让不同的行为树都有各自独立的更新间隔的话,可以这样:
BehaviorManager.instance.Tick(BehaviorTree);

更多方法,请查看BehaviorManager类

Unity 行为树-管理的更多相关文章

  1. 从Profile中窥探Unity的内存管理

    刨根问底U3D---从Profile中窥探Unity的内存管理 这篇文章包含哪些内容 这篇文章从Unity的Profile组件入手,来探讨一下Unity在开发环境和正式环境中的内存使用发面的一些区别, ...

  2. Unity——对象池管理

    Unity对象池管理 一.Demo展示 二.逻辑 在游戏中会出现大量重复的物体需要频繁的创建和销毁:比如子弹,敌人,成就列表的格子等: 频繁的创建删除物体会造成很大的开销,像这种大量创建重复且非持续性 ...

  3. [Unity插件]Lua行为树(十二):行为树管理

    之前运行的行为树,都是一颗总树,那么实际上会有很多的总树,因此需要对行为树进行管理. BTBehaviorManager.lua BTBehaviorManager = {}; local this ...

  4. unity行为树制作AI简单例子(2)

    继续昨天的工程,给Monster添加一个空物体命名为AI,在AI添加脚本BehaviorTree,然后就可以打开行为树编辑器进行编辑了 先写好自定义的节点脚本,下面是一个寻找漫游点的行为节点脚本 us ...

  5. 【转载】Unity 优雅地管理资源,减少占用内存,优化游戏

    转自:星辰的<Unity3D占用内存太大的解决方法> 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D  ...

  6. 刨根问底U3D---从Profile中窥探Unity的内存管理

    这篇文章包含哪些内容 这篇文章从Unity的Profile组件入手,来探讨一下Unity在开发环境和正式环境中的内存使用发面的一些区别, 并且给出了最好控制内存的方法(我想你已经知道了...Prefa ...

  7. Unity 行为树-基础

    .前言 Unity里面的行为树又名BehaviorTree,最常用在NPC的敌人逻辑中. 二.基础说明(转载) 1.行为树的调用时间为每帧: 2.每个节点的状态只能下面3个中的其一:成功Success ...

  8. 如丝般顺滑:DDD再实践之类目树管理

    在上次反思DDD实践之后,在类目树管理项目中再次实践DDD.从需求分析到建模和具体的落地,结合个人体会,都是干货.

  9. unity行为树制作AI简单例子(1)

    用行为树来制作AI是非常方便的,今天就给大家简单介绍一下行为树的强大之处. 所用插件 Behavior Designer v1.421 最开始 我使用过Rain插件,不过用过Behavior Desi ...

随机推荐

  1. luogu1754卡特兰数

    卡特兰数 打表 滑稽 #include<iostream> #include<cstdio> #include<algorithm> #include<cst ...

  2. Nhibernate 三种配置方式

    1 App.config 的配置: <?xml version="1.0" encoding="utf-8" ?><configuration ...

  3. bzoj 2594: 水管局长数据加强版 Link-Cut-Tree

    题目: Description SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公 ...

  4. 【转】 Pro Android学习笔记(七五):HTTP服务(9):DownloadManager

    目录(?)[-] 小例子 保存在哪里下载文件信息设置和读取 查看下载状态和取消下载 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog.csd ...

  5. 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版

    目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖 ...

  6. RESTEasy入门学习

    RESTEasy是JBoss的开源项目之一,是一个RESTful Web Services框架.RESTEasy的开发者Bill Burke同时也是JAX-RS的J2EE标准制定者之一.JAX-RS是 ...

  7. IOS的设计模式

    对象创建 原型(Prototype) 使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象. NSArray *array = [[NSArray alloc] initWithObject ...

  8. #ifdef-#endif的作用及其使用技巧

    电脑程序语句,我们可以用它区隔一些与特定头文件.程序库和其他文件版本有关的代码. 1 2 3 #ifdef语句1 //程序2 #endif 可翻译为:如果宏定义了语句1则程序2. 作用:我们可以用它区 ...

  9. C++经典问题:狐狸找兔子

    问题描述: 围绕着山顶有10个洞,一只狐狸和一只兔子住在各自的洞里.狐狸想吃掉兔子.一天,兔子对狐狸说:"你想吃我有一个条件,先把洞从1-10编上号,你从10号洞出发,先到1号洞找我:第二次 ...

  10. R中的统计模型

    R中的统计模型 这一部分假定读者已经对统计方法,特别是回归分析和方差分析有一定的了解.后面我们还会假定读者对广义线性模型和非线性模型也有所了解.R已经很好地定义了统计模型拟合中的一些前提条件,因此我们 ...