Unity3D行为树插件BehaviorDesigner(三-组件介绍(1))

(1)行为树组件:Behavior Tree Component

如下图:


这个组件记录了你的行为树的结构以及一些 BehaviorDesigner 配置信息。

下面的 API 用来启动和停止你的行为树

public void EnableBehavior();

public void DisableBehavior(bool pause = false); 

你可以通过下面的这些方法查找行为树中的相关节点 task 任务

TaskType FindTask< TaskType >(); 

List< TaskType > FindTasks< TaskType >(); 

Task FindTaskWithName(string taskName); 

List< Task > FindTasksWithName(string taskName); 

行为树当前的执行状态可以像下面这样获取: behaviorTree.ExecutionStatus; 当行为树运行结束后会有一个状态被返回,返回的接口可能是 Success 成功或者是 Failure 失败,这个结构依赖于行为树中的各个 子节点 Task 任务的返回值, 你可以对行为树监听以下事件: 

OnBehaviorStart

OnBehaviorRestart

OnBehaviorEnd 

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

Behavior Name 行为树的名称 

Behavior Description 行为树的描述信息 

External Behavior 一个外部行为树的资源引用,行为树可以被导出成外部序列化文件(ScriptableObject 文件)单独存储,并被其他行为树引用,或 者作为子节点任务而使用,方便了行为树的共用。

Group 行为树的分组编号,用来将行为树分组,可以用来方便的查找到特定的行为树。

Start When Enabled 如果设置为 true,那么当这个行为树组件 enabled 的时候,这个行为树就会被执行。

Pause When Disabled 如果设置为 true,那么当这个行为树组件 disabled 的时候,这个行为树就会被暂停。

Restart When Complete 如果设置为 true,那么当这个行为树组件执行结束的时候,这个行为树就会被重新执行。

Reset Values On Restart 如果设置为 true,那么当这个行为树组件 reset 的时候,这个行为树就会被重新执行

Log Task Changes 当设置为 true 是,这个行为树下只要 task 流程发生变化就会打印一条 log 日志到控制台中。

(2)用脚本创建一个行为树

在某些情况下,你可能想要通过脚本在运行时创建一个行为树,而不是直接使用拖拽或者面板操作去创建!例如:如果你已经导 出了一个外部行为树,并想通过脚本创建它的话,可以如下这么做:

在这个例子中公共变量 behaviorTree 包含你引用的外部行为树。新创建的行为树在创建时将自动加载所有子节点任务。通过设置 startWhenEnabled 为 false 来阻止行为树在创建后立刻被执行,你可以通过 bt.enabledBehavior()来开启行为树.

(3)Behavior Manager 行为管理器


当运行一个行为树的时候,会在场景中自动创建一个名称为BehaviorManager的GameObject,并添加了组件脚本BehaviorManage.cs.

这个脚本用来管理所有场景中的行为树。你可以控制行为树的更新类型,以及更新时间等等。”Every Frame”是每帧都更新行为树。”Specify Seconds”定义个一个更新间隔时 间。”Manual”是手动调用更新,选择这个后需要通过脚本来调用行为树的更新,例如下面这样: BehaviorManager.instance.Tick(); 此外,如果你想让不同的行为树都有各自独立的更新间隔的话,可以这样: BehaviorManager.instance.Tick(BehaviorTree)

Task Execution Type(任务执行类型)允许你指定行为树的执行次数,默认是“No Duplicates”(不复制,不重复)像下图中的这种循环操作可以简单的通过这类设置执行次数来实现。

Repeater Task(重复任务节点)设置成 5 次。如果 Task Execution Type(任务执行类型)被设置为“No Duplicates”(不复制,不重复),那么 Play Sound task(播放音乐任务节点)则会被每帧执行一次。如果 Task Execution Type(任务执行类型)被设置为 5,那么那么 Play Sound task(播放音乐任务节点)会在 每帧被执行 5 次。

本人的个人网站:

http://www.swordmaster.info/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容