Unity火爆插件Behavior Designer行为树插件学习

简介: 如果要让游戏里的角色或者NPC能执行预设的AI逻辑,最简单的用IF..ELSE...神器既可以实现, 但是再复杂的一般用经典的状态机来切换状态,但是写起来比较麻烦。相对的,行为树(Behavior Tree)理解和编辑起来就非常简单了。

如果要让游戏里的角色或者NPC能执行预设的AI逻辑,最简单的用IF..ELSE...神器既可以实现,

但是再复杂的一般用经典的状态机来切换状态,但是写起来比较麻烦。相对的,行为树(Behavior Tree)理解和编辑起来就非常简单了。

行为树,其实也是一种有限状态机,只不过形式上分层呈树结构,人称分层有限状态机(HFSM)。

行为树主要用四种节点来描述行为逻辑

--顺序节点(Sequence):组合节点,顺序执行子节点,只要碰到一个子节点返回FALSE,则返回FALSE;否则返回TRUE。

--选择节点(Selector):组合节点,顺序执行子节点,只要碰到一个子节点返回TRUE,则返回TRUE;否则返回FALSE。

--条件节点(Condition):叶节点,执行条件判断,返回判断结果。

--执行节点(Action):叶节点,执行设定的动作,一般返回TRUE。

比如:我们要表达一个最简单的NPC AI :

如果碰到主角,打招呼;否则,睡觉。
行为树的结构如下(其中黄色的是装饰节点,这里当做CD定时器来处理,在CD时间内这个节点一直返回FALSE,否则返回TRUE):
2011042322465438

设计好这个图,实现时将其转化为xml或者lua table或者json或者其他层次化的表示供程序读入,并构建好树对象,整个执行流程伪代码可能是这样的:

function gameBrain.init()

bt = btreee:new()
bt.load("test.xml")

end

function gameBrain.update()

 bt.execute()

end

function main_cycle()
--...
brain.update()
--...
end
 

有了这样一颗行为树,如果我们改变Condition的条件及两个不同的Action的具体操作,就可以实现各种各样的IF...ELSE...的AI逻辑;你可能说这简直就是简单问题复杂化;对于上边的这个逻辑的确是这样。但是行为树的优势在于其可以用层次化的方式表述AI,甚至可以用很简单的图形化的方式来编辑AI,而不需要改动AI框架代码。实施的时候,可以策划设计好行为树结构,程序填写Condition和Action即可;甚至可以做到代码完全不动,程序预先写好各种不同的Condition和Action供策划选用即可。


在Unity中我们如何实现和应用行为树呢?

以下为大家介绍[可视化插件] Behavior Designer 1.6.1 - 行为模式设计专用插件
c57b091e_2457_4d70_8302_0d5dd633c87f
a1c53596_072a_4067_865c_f28ca7b0069b_scaled
8f8244e9_b75a_4048_ab16_caab17e8d741_scaled
974c1fb3_2e58_47bf_b211_3f6913386c58_scaled
525e6afd_ac09_460a_be0d_fb28ad29fd0c_scaled

Behavior Designer提供了一个功能强大的API,使您可以轻松创建新任务。它还提供了一个直观的可视化编辑器,包含数百个任务和PlayMaker / uScript集成,可以创建复杂的AI而无需编写任何代码!

行为设计师从一开始就设计得尽可能高效。因此,它在包括移动设备在内的所有平台上运行良好。它适用于Unity。

特征:

  • 直观的可视化编辑器
  • 功能强大的API
  • 可视运行时调试器
  • 在任务之间进行通信的变量
  • 有条件的中止
  • 将现有代码与反射任务一起使用
  • 数以百计的任务
  • 没有额外的资产文件或编译步骤
  • 二进制或JSON序列化
  • 包括运行时源代码
  • 丰富的文档和教程视频
  • 在线提供示例项目
  • 和更多

点击下载 提取码:2ave

相关文章
|
2月前
|
传感器 开发工具 vr&ar
ManoMotion⭐二、Unity手势识别插件简介,及效果录屏
ManoMotion⭐二、Unity手势识别插件简介,及效果录屏
|
1月前
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
61 0
|
3月前
|
数据可视化 vr&ar C#
|
4月前
|
人工智能 定位技术 图形学
【unity实战】制作敌人的AI,使用有限状态机、继承和抽象类多态 定义不同状态的敌人行为
【unity实战】制作敌人的AI,使用有限状态机、继承和抽象类多态 定义不同状态的敌人行为
109 1
|
4月前
|
数据可视化 大数据 API
【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用
【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用
100 0
|
4月前
|
自然语言处理 搜索推荐 API
【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用
【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用
120 0
|
4月前
|
JSON 开发框架 API
【推荐100个unity插件之20】一个强大的JSON处理库——Newtonsoft.Json(也称为Json.NET)
【推荐100个unity插件之20】一个强大的JSON处理库——Newtonsoft.Json(也称为Json.NET)
235 0
|
4月前
|
图形学
【推荐100个unity插件之19】武器拖尾特效插件——Pocket RPG Weapon Trails(2d 3d通用)
【推荐100个unity插件之19】武器拖尾特效插件——Pocket RPG Weapon Trails(2d 3d通用)
58 0
|
4月前
|
数据可视化 C# 图形学
【推荐100个unity插件之18】Unity 新版输入系统Input System的基础使用
【推荐100个unity插件之18】Unity 新版输入系统Input System的基础使用
97 0
|
4月前
|
图形学
【unity小技巧】手戳代码程序化绘制地形Terrain树和预制体物品、动物
【unity小技巧】手戳代码程序化绘制地形Terrain树和预制体物品、动物
32 0