您当前的位置: 首页 > 

开发游戏的老王

暂无认证

  • 5浏览

    0关注

    803博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

虚幻插件:Logic Driver Pro 终极状态机插件初探

开发游戏的老王 发布时间:2020-12-23 17:08:14 ,浏览量:5

文章目录
      • 获取与安装
      • 原理和特性
        • 状态机
        • 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

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_A to State_B

在这里插入图片描述

State_B to State_C

因为State_B to State_C是事件式转移,所以对它进行事件触发的设置

Delegate Owner Instance是委托事件所属的对象,默认是this 即状态机,本例设置为Context,选择Context的类型,然后指定委托事件。

在这里插入图片描述

State_A/State_B/State_C

状态的设计也很清晰明朗,可以通过GetContext节点获取上下文

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

小结

面向状态开发的必备插件,就是价格有点小贵。

关注
打赏
1656935939
查看更多评论
立即登录/注册

微信扫码登录

0.0793s