Unity bolt教程

Unity bolt教程

里约热内驴

Unity bolt教程
于 2022-05-21 17:22:34 发布
Unity bolt教程
1222
Unity bolt教程
收藏 10

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

Bolt介绍

Unity bolt教程

前言:想实现类似橙光游戏、互动视频的效果。如果用代码编写,过多的分支节点会难以管理,如果有类似虚幻蓝图的可视化编程方式将极大方便工作开展。先是找到PlayerMaker插件,觉得编写有局限性较大。而后找到Bolt插件,发现符合需求,自由度够高。

0 插件介绍

2018年Ludiq开发商开发Bolt可视化编程插件,最初售价70美元。2020年Unity Technologies收购了该插件,并免费开放给用户使用。

Ludiq网站:https://link.csdn.net/?target=https%3A%2F%2Fludiq.io%2Fbolt

Bolt官方文档:https://docs.unity3d.com/bolt/1.4/manual/index.html

0.0 视频教程

Unity bolt教程

  1. 教程介绍及准备:Bolt安装及设置。

  2. 实现基本的人物移动:节点、变量的基本用法。

  3. 跳跃-地面检测-动画-Gizmos:多个宏嵌套。

  4. 场景加载-数据保存:Custom Event创建使用,系统数据存储。

  5. HUD-获得钥匙开门:Application Variable使用。

  6. 人物血量更新及状态切换:For循环使用,State Machine使用,协程使用。

  7. 短暂无敌-敌人AI巡逻:状态机(State Machine)构建。

  8. 敌人追击AI:状态机(State Machine)的切换。

  9. 玩家投掷 - 敌人死亡

  10. 制作菜单及UI互动:C#代码配合Bolt使用。

1 基本配置

1.1 插件导入

从Asset Store搜索Bolt,导入插件。

Unity bolt教程

Unity bolt教程

点击Tools》Install Bolt,等待插件安装。

Unity bolt教程

点Next进入导向,模块命名方式有两种,程序员选Programmer Naming,符合编程习惯,非程序员选另一个,模块命名更像人话。

Unity bolt教程

Unity bolt教程

啥都不用改,点Next继续,点Generate等待执行完毕,插件配置结束。

Unity bolt教程

Unity bolt教程

1.2 界面布局

为方便编程,要把常用窗口调出来。先在Layout中将布局设置回默认状态。

Unity bolt教程

菜单栏Window,分别调出Graph(蓝图编辑窗口),Graph Inspector(组件属性编辑窗口),Variables(变量创建窗口)。拖到如图对应位置,在Layout中保存该布局,命名为Bolt,方便以后使用。

Unity bolt教程

Unity bolt教程

2 插件说明

介绍一些概念。

2.1 蓝图

插件可以创建两种蓝图进行可视化编程,分别是Flow Machine和State Machine。

Unity bolt教程

  • Flow Machine:流程机。编写的逻辑会一步步从前往后运行,和写代码一样,一行行往下运行。一个Flow Machine里可以有多个Flow Machine,也就是套娃,类比代码里一个方法可以调用很多其他方法。
  • State Machine:状态机。参考Unity里的动画状态机,运行时会从一个状态开始,满足一定条件会跳到另一个状态。一般配合Flow Machine使用,一个状态就是一个Flow Machine。

蓝图有两种模式,Embed和Macros。

Unity bolt教程

  • Embed:内嵌模式。独立存在,只有一个。
  • Macro:宏模式。类似模板,可以复用。

它两的区别是,内嵌模式可以将场景中已经存在的物体直接拖进蓝图中参与处理(参考已经挂载到物体上的脚本,如果其中定义了公开变量(public),可以通过直接拖拽场景中的物件对这个变量赋值),相比宏模式不支持这个操作。

这里我第一次用的时候就很迷惑,发现场景中的物体不能拖进来使用,因为像C#脚本挂载到物体上后就是可以对Public变量赋值的,后来才发现要转Embed模式。其实它这么设计也有一定用处,就是当你再改模板的时候,你转为Embed模式的蓝图不会受到影响。但是Macro模式为什么不能拖物体这里就有点奇怪,因为写C#脚本跟这个Macro模式是一样的,就是写一个可以复用的模板,而它挂载到物体上就是实例化了这个脚本,是可以使用场景中的物体来对变量赋值的。

2.2 变量

数据格式类型,像整形、浮点型、布尔型等,该有的都有,也没啥好说的。

主要是数据管理类型,分为Graph、Object、Scene、App和Saved。

Unity bolt教程

  • Graph:只在当前蓝图内可以使用。相当于代码里的私有变量(private)。
  • Object:当前物体上挂载的其他蓝图也可以使用。
  • Scene:当前场景内都可以使用,跳转到其他场景后不能使用。
  • Application:任意场景均可以使用,程序结束并再次运行时,变量恢复初始化。
  • Saved:同App,但程序再次运行会保留之前的数据,用于存储成长性的数据(如玩家金币数等)。

3 插件使用

这里简单实现一个按钮点击后,产生其他新按钮的效果(类似互动视频、橙光游戏的效果)。

Unity bolt教程

我当时做项目的思路是在Canvas下生成Button,并用Layout Group进行自动排列。

Canvas上挂载蓝图状态机,并设置一个整形变量以确定跳转的分支点,设置布尔型变量以触发分支跳转。

Button做一个预制体,这个预制体在点击后按钮会修改Canvas中分支变量和跳转触发变量,以实现分支的跳转。

最后效果是实现了,但是每次添加分支还要手动设置一下分支号,感觉设计的还是不够合理。

待更新。。。

懒了,先不写了,有可能也会停更。