obsidian/笔记文件/2.笔记/特效音效编辑器_第二章.md
2025-03-26 00:02:56 +08:00

4.4 KiB
Raw Permalink Blame History

右侧显示

!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