- 获取与安装
- 原理和特性
- 状态机
- Node Class
- 使用范例
- 定义上下文
- 定义状态机
- State_A to State_B
- State_B to State_C
- State_A/State_B/State_C
- 小结
这是老王在虚幻商城出的第一滴血,99.99大刀,这个插件还有一个Lite版34.99刀
Logic Driver Pro 是一个引擎插件,目前支持到4.19-4.26,下载启用即可
Logic Driver就是一套通用状态机系统,可以用来开发游戏逻辑/AI/UI等等,状态机驱动的对象(在Logic Driver中被称为上下文context)可以是任意类型的UObject
,同时一个上下文可以拥有多个状态机。Logic Driver支持子状态机并且所有的状态机类/状态类/过渡类都可以定义在独立的蓝图中,从而重复使用。状态间不仅支持条件式转移也支持事件式转移。总之非常的灵活,是老王心目中理想的状态机的样子。
条件式转移: 转移条件是由若干个变量组成的一个最终输出值为布尔类型的表达式,当表达式值为True即转移,因此状态机系统每一次Update都要检查是否达成转移条件。 事件式转移: 转移条件和一个委托(Delegate)绑定,当委托委托被调用(触发)即转移状态。
状态机Node Class蓝图是为了复用的,不需要复用的话直接在状态机里创建就可以
一个Actor有三个状态State_A、State_B和State_C:
- State_A为默认状态
- 在State_A中持续2秒以后会跳转到State_B(使用条件式跳转)
- 在State_B时,当我们按下键盘上的
E
键会跳转到State_C(使用事件式跳转)
本例的上下文就是一个带静态模型的Actor,为它添加一个StateMachineComponent
注意: 除了用组件的形式也可以自定义StateMachineComponent
类型的成员变量,但是使用组件最简单,它初始化的时候会自动将所属Actor设为自己的上下文。用用成员变量的就需要很多手动设置,但是原理都是一样的。
状态机的样子很像动画蓝图,一些细节设计也很到位
因为State_B to State_C是事件式转移,所以对它进行事件触发的设置
Delegate Owner Instance
是委托事件所属的对象,默认是this
即状态机,本例设置为Context
,选择Context
的类型,然后指定委托事件。
状态的设计也很清晰明朗,可以通过GetContext
节点获取上下文
面向状态开发的必备插件,就是价格有点小贵。