120 lines
3.8 KiB
Markdown
120 lines
3.8 KiB
Markdown
这个区域的拖曳逻辑,注册
|
||
|
||
![[Pasted image 20240308134123.png]]
|
||
|
||
检测拖曳的物体,是否为动画片段
|
||
|
||
![[Pasted image 20240308143525.png]]
|
||
|
||
松开鼠标的时候,判断,如果是动画片段,而且非空,就开始检测下一步,看轨道上,是否有空余位置,存放该动画片段;
|
||
|
||
![[Pasted image 20240308143627.png]]
|
||
|
||
放置完成后,也是自动保存,技能配置文件,同时也会调用函数,创建一个新的动画Item
|
||
|
||
![[Pasted image 20240308143840.png]]
|
||
|
||
当前,初始化动画轨道,只有这一个
|
||
|
||
![[Pasted image 20240308144001.png]]
|
||
|
||
编辑器脚本中,update更新函数,是播放整体技能的相关逻辑
|
||
DateTime.Subtract 方法,是返回通过从此实例的值减去指定的时间或持续时间得到的值
|
||
|
||
![[Pasted image 20240311132418.png]]
|
||
|
||
配置的帧率是30,默认是10
|
||
|
||
![[Pasted image 20240311132815.png]]
|
||
|
||
![[Pasted image 20240311132830.png]]
|
||
|
||
播放过程,驱动 画面重绘,和技能播放
|
||
|
||
![[Pasted image 20240311132927.png]]
|
||
|
||
这里是驱动技能播放的入口;
|
||
先拿到当前,预览的角色实体,动画控制器,还有当前的动画帧数据,计算完运动和姿态之后,预览实体的绝对坐标,也对应修改
|
||
|
||
![[Pasted image 20240311133004.png]]
|
||
|
||
通过有序字典结构,存储所有动画数据,然后遍历;
|
||
[[Csharp冷门系列之SortedDictionary、SortedList]]
|
||
针对每一帧动画数据,通过索引进行管理
|
||
|
||
![[Pasted image 20240311133557.png]]
|
||
|
||
如果是循环动画,需要多次采样
|
||
|
||
![[Pasted image 20240311133720.png]]
|
||
|
||
采样动画,同时也同步拿到,预览体坐标,赋值计算,用于函数最后,预览体的绝对坐标变更
|
||
[[手动采样动画 Sample Animation]]
|
||
|
||
![[Pasted image 20240311133742.png]]
|
||
|
||
采样动画之后,动画控制器的applyRootMotion也需要,对应同步修改变动即可
|
||
|
||
![[Pasted image 20240311134252.png]]
|
||
|
||
前面的逻辑,是在编辑器模式下,进行技能动画的采样和播放;
|
||
最终会生成一个tempskillconfig的配置文件;
|
||
游戏运行的时候,就是基于这个配置文件,去播放动画动画;
|
||
这是技能播放器,相关的类;
|
||
其中的初始化,对应的控制器,是[[第三人称角色控制]]制作的playable动画播放控制器
|
||
|
||
![[Pasted image 20240311141520.png]]
|
||
|
||
调用播放动画,就是各个传参,然后触发技能
|
||
|
||
![[Pasted image 20240311141628.png]]
|
||
|
||
驱动动画相关逻辑,也是用了[[第三人称角色控制]]制作的playable动画播放控制器的相关逻辑,进行动画的权重修改和播放
|
||
|
||
![[Pasted image 20240311141656.png]]
|
||
|
||
![[Pasted image 20240311141731.png]]
|
||
|
||
运行时,驱动技能的播放逻辑,跟编辑器下,是基本一样的
|
||
|
||
![[Pasted image 20240311142346.png]]
|
||
|
||
调用技能播放器的,是移动状态类,也是用了[[第三人称角色控制]]制作的有限状态机;
|
||
而且技能播放完之后的OnSkillEnd Action回调,就是切换回,角色的Idle默认状态
|
||
|
||
![[Pasted image 20240311141824.png]]
|
||
|
||
默认状态下,点击鼠标左键,就可以测试技能播放了
|
||
|
||
![[Pasted image 20240311142006.png]]
|
||
|
||
游戏运行时,也是加载,资源统一管理的,配置文件
|
||
|
||
![[Pasted image 20240311142041.png]]
|
||
|
||
场景,运行,表现正常:
|
||
|
||
![[Pasted image 20240311142115.png]]
|
||
|
||
每一段动画,都可以单独根据布尔判断,是否要跟随,根运动
|
||
|
||
![[Pasted image 20240311142730.png]]
|
||
|
||
![[Pasted image 20240311142816.png]]
|
||
|
||
[[Unity OnValidate使用]]
|
||
编辑器模式下,配置资产的变动,也会触发界面内容的更新
|
||
|
||
![[Pasted image 20240311144229.png]]
|
||
|
||
![[Pasted image 20240311144303.png]]
|
||
|
||
![[Pasted image 20240311144316.png]]
|
||
|
||
同步技能编辑器,滑动条,相关位置
|
||
|
||
![[Pasted image 20240311144930.png]]
|
||
|
||
![[Pasted image 20240311144939.png]]
|
||
|