之前使用过Player Maker,就一直对类似的可以化脚本插件不太感冒,感觉很低级。最近看了Unity Asset Score排名,无意之中看到了Bolt还是第一名。(现在回想第一次听到它应该是在Unity做Shader Graph的直播上)。排名还是挺高的,好奇之下就下来玩玩,之后就不一发不可以收拾。
整体特点:
1. 以Event驱动,分为Flow和Status两大逻辑控制单元,可以分别绑定对相应的对象上
2. 扩展性很强,自定义Event 、Wait等结点很方便。这样可以配合其它框架发挥1+1大于2的作用,比如:个人非常喜欢配合UniRX使用。使用它可以帮助或者说是强制我们使用ECS/MCV的模式进行解决问题,强制我们进行模块化、面向对象思考。这里还是推荐大家使用它进行UI层的控制。
3. 与控制模块交互很方便,调用底层代码要比Player Maker方便的多,还有常用的UnityEvent以及Variable。
下面是本人关注功能的实验内容
1. 结点
支持如下,其它不用太多说明,Event、Wait很丰富,另外Favorite下的第一个是指当前Flow或者status绑定的对象。可以通过其访问对象上绑定的脚本。
访问脚本的Test方法过程如下,但每次修改调用接口脚本时,需要更新一下(Tools ->Bolt ->Update Unit options),这样有人会说不方便,本人感觉这样的限制会更好,毕竟这些在Bolt中调用类都是对外提供的接口,接口如果经常更新说明设计是有D e问题。Debug结点使用有点麻烦。对于方法的返回值,内置类型都支持(甚至是协程)
如果需要返回自定义类,需要在以下界面中加入相应的类的定义。这样在 Variable中也可以使用了。
2. 事件
基本包括了所有Unity支持的事件
其中UnityEvent通过获取Flow或者Status组件,调用以下TriggerUnityEvent方法。
UI事件支持,很方便。
3. 常量
支持以下五种常量,生命周期不同,本人只常用Scene和Object的,App可以做为单体使用。
如上图,定义Scene常量之后,会在对象所在的Scene中自动创建一个对象,通过以下结点进行设置
通过代码访问也很方便
4. 自定义结点
这个是它的优势,以下是一个定义的Wait结点
以下是加入结点属性的方法,定义了一个Second的ValueInput成员,其中PortLable属性是用于显示的属性名,如下需要Override Definition方法并把ValueInput加入到队列中,这样才能在结点UI中显示新的属性。
5. 异步支持
常用的结点就是Wait结点了,直接支持协程结点,只不过使用不太方便,推荐使用自定义Wait进行封装。
6. 运行时支持
7. 性能
没有发现明显的性能问题
8. 版本控制
Flow或者Status就是一个Json文件,这样可以进行多人SVN的版本控制。
附:bolt 1.2插件分享,只用于学习参考。
链接:https://pan.baidu.com/s/1MZE1n3EGZuRKujZAp-Uw3Q 密码:s02l