特效音效编辑器_第二章.md 4.4 KB

右侧显示

![[Pasted image 20240311171105.png]]

对应逻辑,初始化主要是定了,选中上面音频的相关颜色显示 还有注册,拖曳资产,到轨道上

![[Pasted image 20240311171411.png]]

拖曳资源,也是跟动画资源类似,检测是否为音频,然后根据帧索引,进行放置,刷新页面,保存配置文件

![[Pasted image 20240311171528.png]]

其中,音频的U控件比较简单

![[Pasted image 20240311171823.png]]

相关样式逻辑

![[Pasted image 20240311171929.png]]

刷新界面,设置标题相关

![[Pasted image 20240311171946.png]]

回到音频轨道类,调用上面音频控件相关显示逻辑,然后也注册鼠标相关,交互逻辑

![[Pasted image 20240311172042.png]]

鼠标交互逻辑,和之前动画片段的,交互逻辑基本一样

![[Pasted image 20240311172247.png]]

![[Pasted image 20240311172254.png]]

选中某个音频,或者特效,在对应的显示面板,新增了条件判断,去显示

![[Pasted image 20240311172426.png]]

对应的面板显示逻辑,还有修改音频资源,相关逻辑

![[Pasted image 20240311172622.png]]

音频的属性面板,交互相关逻辑,也就是修改音量相关

![[Pasted image 20240311172701.png]]

点击音频片段,表现

![[Pasted image 20240311172746.png]]

技能基类,也新增播放,虚函数接口

![[Pasted image 20240312115311.png]]

回到音频轨道类,这是播放音频的实现逻辑,包含从特定位置,播放音频,如果帧索引和音频的开始索引,相等,就从头开始播放的逻辑

![[Pasted image 20240312105254.png]]

这个逻辑,就是编辑器,驱动技能的统一接口重写

![[Pasted image 20240312105431.png]]

调用位置

![[Pasted image 20240312105526.png]]

根据逻辑,一个音效轨道上,只会有一个音频item,如果拖曳新的音频到,同一个轨道,就会对其重新赋值,取代旧的

![[Pasted image 20240312114117.png]]

重新构建逻辑

![[Pasted image 20240312114215.png]]

音频播放,在编辑器模式下,通过反射的形式,拿到对应的组件接口

![[Pasted image 20240312114916.png]]

填写音频采样率frequency,通过Invoke的方式,播放即可

![[Pasted image 20240312114945.png]]

调用

![[Pasted image 20240312115045.png]]

游戏运行时,播放音效的接口逻辑,是在音频管理器中

![[Pasted image 20240312115801.png]]

对象池,统一管理,音频播放器

![[Pasted image 20240312115950.png]]

音效播放之后,也是回收到对象池即可

![[Pasted image 20240312120254.png]]

游戏运行时,驱动音效接口,这里的音频是根据配置文件拿到的,没通过资源管理接口; 是从头播放,而且配置文件的,Voluem音量,也会传参过去

![[Pasted image 20240312120328.png]]

游戏运行,音效是可以正常播放的

![[Pasted image 20240312120601.png]]

特效的数据结构

![[Pasted image 20240312120637.png]]

分别是对应的特效预制体,位置,旋转,缩放,持续时间,是否自动销毁

![[Pasted image 20240312120644.png]]

初始化特效的入口:

![[Pasted image 20240312121249.png]]

![[Pasted image 20240312121350.png]]

这是特效轨道类逻辑; 样式,是用了跟音频轨道,相同的样式; 初始化的时候,会检测是否在技能编辑器场景,如果在的话,会找到Effects这个根节点,重置一下坐标; 如果根节点还有,特效子物体,会调用DestroyImmediate销毁实体

![[Pasted image 20240312121409.png]]

检测场景逻辑

![[Pasted image 20240312121621.png]]

![[Pasted image 20240312121631.png]]

对应场景,根节点

![[Pasted image 20240312121644.png]]

特效片段

![[Pasted image 20240312121733.png]]

对应逻辑类; 其中样式,也是用了,跟音效相同的,显示样式;

![[Pasted image 20240312121745.png]]

![[Pasted image 20240312121850.png]]

特效的预览,是需要实例化一个预览实体

![[Pasted image 20240312121943.png]]

这里是触发预览的重写函数; 如果已有实体,就销毁,然后也把角色实体的,坐标和旋转,通过换算,赋值给,新实例化出来的,预览特效实体

![[Pasted image 20240312122013.png]]

然后,调用预览实体上挂载的ParticleSystem组件,模拟播放特效即可

![[Pasted image 20240312122212.png]]

清理特效相关

![[Pasted image 20240312122254.png]]

销毁函数,也有调用

![[Pasted image 20240312122326.png]]