obsidian/笔记文件/2.笔记/技能编辑器_第五章.md
2025-03-26 00:02:56 +08:00

120 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

这个区域的拖曳逻辑,注册
![[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]]