而技能配置文件,相关逻辑,就更加简单了

对技能配置进行赋值,刷新轨道和帧总数,是后面的逻辑

根据逻辑,为空的时候,帧上限是100

有了配置之后,就根据配置的来了,这里是130:

是一致的:

查看基本信息:

逻辑就是选中,对应的技能配置文件

技能配置文件的,逻辑入口

继承自框架内,配置基类:

结构上,主要是各个动画数据

最底层的,是帧事件类; 主要是,动画帧片段,是否RootMotion跟随移动,动画过渡时间,动画持续帧

动画帧数据,其中标签,指的是odin序列化,这个字典

这里实例化

具体配置表现:

第二个总布局,就是,主体时间轴,是这个部件

继续,分左右俩部件

时间轴:

时间轴和下方的轨道,鼠标滚轮缩放,会同步控制 所以逻辑上,也会关联起来

这是时间轴相关的,组件

时间轴是这个部件:

获取方式,也是同理:

这是一个滑动ScrollView

这俩组件:

对应:

时间轴的绘制逻辑

具体实现; 颜色是白,根据偏转坐标,拿到起始索引 Mathf.RoundToInt 根据技能配置的帧宽度,打点,去绘制线条和文本

偏转坐标,是跟上述ScrollView组件,是关联的

具体绘制出来的效果:

绘制完成之后,还需要注册,不同的交互事件逻辑,分别是: 鼠标滚轮移动,鼠标点击、移动、抬起,移出

滚轮控制,放大和缩小

打脏标记,重绘

也会同步控制,列表的宽度

这个帧线的绘制

表现和逻辑:

选中线的pos坐标,是根据,当前选中的索引,运算得到

鼠标按下逻辑,也是修改这个,选中索引

鼠标点击,转换帧索引逻辑:

鼠标移动、抬起、移出时间轴相关逻辑; 也是修改帧索引,和布尔值

最终实现效果: