【Unity可视编程】Bolt 介绍及橙光游戏/互动视频效果的实现

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 视频教程

  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,导入插件。

image-20220311084706327

image-20220311084449448

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

image-20220311084819267

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

image-20220311085036541

image-20220311085214661

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

image-20220311090401486

image-20220311090427877

1.2 界面布局

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

image-20220311091539268

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

image-20220311090832591

image-20220311092115383

2 插件说明

介绍一些概念。

2.1 蓝图

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

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

蓝图有两种模式,Embed和Macros。
在这里插入图片描述

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

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

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

2.2 变量

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

主要是数据管理类型,分为Graph、Object、Scene、App和Saved。
在这里插入图片描述

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

3 插件使用

这里简单实现一个按钮点击后,产生其他新按钮的效果(类似互动视频、橙光游戏的效果)。
请添加图片描述
我当时做项目的思路是在Canvas下生成Button,并用Layout Group进行自动排列。

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

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

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

待更新。。。

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

  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值