欢迎光临散文网 会员登陆 & 注册

7.Unity 基于Flux制作Act技能编辑器

2022-11-01 02:53 作者:机智的小草yns  | 我要投稿

相关视频 :


Flux是一个类似于TimeLine的轨道动画编辑插件,看过Flux的代码,写得真好,拿来用了。然后再凭借之前写的战斗demo经验做出的Act技能编辑器。目前网上关于技能编辑器的资料比较少,花了很久的时间才做得有点模样,自己摸出来的思路可能不算特别好,给大家参考下。(大概半年后会开源)


技能编辑器分3部分:

1.技能预览, Flux在预览部分基本都做好了,用法和TimeLine类似。

2.技能数据保存。需要将Flux中的序列事件信息保存起来,给技能执行器用。

3.技能事件执行器。核心运行逻辑。

总的来说就是,用Flux做技能预览,然后序列化技能数据,保存帧时间序列。比如动作,特效,位移等等事件。最后是模仿Flux的序列(Sequence)做技能事件执行器。

1.技能预览


Flux的结构是,Sequence→Container→Timeline→Track→Event。一个父容器包含多个子容器。比如Sequence包含多个Container。以此类推,一个Track上放多个Event。

创建流程:创建一个Sequence,在默认容器Container(Default)上, 添加玩家TimeLine,加上动画Track,再加上一段AnimationClip作为动画事件。

同理加上位移事件和播放动画事件,一个简单的技能预览就算做完了,拖动时间轴就可以预览了。

操作起来应该不难,参考我的视频 技能编辑器-初版 的操作

其次是,想改造这个编辑器得有点编辑器基础。

2.数据保存

Event的主要结构:起始帧Start,结束帧End,以及内容。

如动画事件的内容为AnimationClip,StartOffset(动画偏移) 和 BlendLength(动画混合帧数)


为了序列化数据,AnimationClip则保存Name即可。这样就完成一个事件的保存了。

读取编辑器Sequence数据:



保存结果如上图所示,一个SkillEventData里有,动画事件,位移缩放事件,特效事件,伤害判定事件,子技能事件等等。

其中, SubSkillData是一个List<SkillEventData>,作为子技能们, 子技能和主技能的结构都是SkillEventData。同样拥有动画,位移等事件。一般用于生成的剑气特效。

按第一张图来说,玩家(man_editor)就是主技能,NorAck_1就是子技能。

(数据保存中名字变为: SkillId+_子技能序号 = “NorAck_0_1”)

NorAck_0 的内容是 动画/位移事件+子技能事件

NorAck_0 _1中的内容则为特效事件+伤害触发事件 +位移事件

这样一个技能的内容就算保存完毕了。


3.技能事件执行器,核心运行逻辑

由于Container一般只用一个。所以运行时的逻辑层简化为 :

Sequence→Timeline→Track→Event。

  • Sequence为主技能和子技能的总和,

  • Timeline为单个主/子技能,

  • Track则对应类型EventList(如AnimEvents),

  • Event则是最小的事件单位。

用伪代码来写,思路是这样的

当所有Event完成时,技能就完成。


具体可以直接看源码

XCEventsRunner  (Timeline)

github.com/smartgrass/X

XCEventsTrack

github.com/smartgrass/X

XCEvent

github.com/smartgrass/X


Event层

Event的生命周期有Init,Trigger,Update,Finish,Stop。

当技能帧 t ≥Start时,触发一次Init和Trigger。

当End≥ t ≥Start,则持续执行Update(t)

当t≥End,则是执行Finish和Stop。此时Event便被标记为Finished。

伪代码:




然后通过继承XCEvent实现不同的事件效果

以动画事件为例:


位移事件为例:




7.Unity 基于Flux制作Act技能编辑器的评论 (共 条)

分享到微博请遵守国家法律