[Unity] 基于 ParadoxNotion FlowCanvas 插件实现技能

发布时间 2023-09-21 17:28:55作者: 当麻

游戏中的技能总是有各种各样的逻辑

比如持续性范围技能,魔兽争霸的暴雪风

链式技能,博德之门的闪电链

持续技能,博德之门的昼明术

等等,这些技能都有各自特殊的逻辑,如何让这些技能有一个通用的配置方法

像是 RPGBuilder 会有一个技能编辑器,里面提供了尽可能多的选择来配置技能

编辑器界面看起来很酷,功能很多,但对于我而言学习成本太高了,如果想修改或拓展其中一些功能,就要花费更多精力去研究它的代码

UE 的蓝图具有很强的灵活性,可以用在各种地方,实现各种逻辑

那么借助蓝图,就可以灵活地自定义技能逻辑了,只需要实现相关的技能逻辑节点即可

但现在用的是 Unity,只能自己开发或者其他地方获取,像是开源的 xNode,以下是 xNode 作者对这个开源插件的定位

Thinking of developing a node-based plugin? Then this is for you. You can download it as an archive and unpack to a new unity project, or connect it as git submodule.
考虑开发基于节点的插件?那么这是给你的。您可以将其作为存档下载并解压到新的 Unity 项目,或将其作为 git 子模块连接。

以我的项目经验而言,拓展维护一套 xNode 插件是一件非常耗时且进展缓慢的事情(如果是商业项目做这种操作风险巨高),而且 Blackboard 这种重要功能也要自己拓展(如果是自己造轮子造着玩,学习 xNode 是相当不错的选择)

于是我找到了 FlowCavnas,一个相当完善的类似蓝图的插件

一个简单的技能,只需要几个节点就能配置完成

 只需要编写简单的战斗框架就可以实现高自定义的技能,FlowCanvas 有这几点好处帮助实现这样的目标

1. 可以通过添加自定义类型,使得开发者可以在 FlowCanvas 使用自定义类型 (UE 蓝图可以直接使用自定义类型,毕竟 Unity 不开源,能实现这样已经很强了)

- FlowCanvas | Modern Visual Scripting for Unity --- - 流画布 | Unity 的现代可视化脚本 (paradoxnotion.com)

2. 可以获取和使用类型中公开的变量和函数,甚至可以传参

3. 拥有 BlackBoard 功能,分为挂在游戏对象上的 BlackBoard 和 该 Asset 的 BlackBoard