unity 声音AudioSystem(一)

本文基于unity官方教学或API撰写,但不限于网络其他资料

你需要知道的:

unity支持的音频格式:(一般使用多的为一下四种)

.aif/.aiff:苹果所使用的一种音频格式(AIFF)一般用于苹果OS操作系统中

特点:无损

.wav:Windows与IBM开发的一种音频格式

特点:无损/不失真

.mp3:一种有损压缩音频格式(不推荐开发中使用)

.ogg:格式比较特殊,它可以是有损的也可以是无损的

还有其他的详见:

音频文件 - Unity 手册

鉴于开发平台的不同:OS推荐使用:.AIFF,windows推荐使用:.wav格式

基于unity底层原因,他会将你导入的MP3/ogg格式音频转化解压成无损的格式(尽管音频本身是有损的)

1、控制音频文件大小/读取方式

        <压缩>如果你需要控制文件的大小,请记得在“inspector”当中的“compression Format”(压缩格式)修改压缩的格式,来进行大小的限制来进行使用,当然此操作只会影响打包,会影响内存当中的大小

一般分三种:

一、(默认)Vorbis  :有损音频压缩格式 (全称ogg  Vorbis)相当于AAC、AC3,可以用OGG来封装(这里需要去详细了解下ogg格式兼容音频频率范围,百度百科在我写的时候没有相关资料),也可以使用质量“Quality”控制压缩的质量,建议不要太低,至少大于50%,如果你压缩的过小解压也会费很多时间

二、PCM(一般在蓝光光盘上常见,全称:脉冲编码调制)是一种模拟信号的数字化方法,在这种压缩下音频幅度会有所减少,会有数字压缩,压缩幅度较小,保留比较完整,几乎不会进行压缩

三、ADPCM(全称:自适应差分脉冲编码调制)找了些资料写的内容也很模糊,请自行搜索,在unity中会比PCM小点,但效果还是要看看,它会导致有一点噪音进去,类似于手机通话的音频,在音乐当中这种手段叫做:band-passing(只有一部分的音频发出来,其他部分都被清掉),在游戏制作中常常在游戏场景较为安静、静雅时使用,也可用于角色的枪声,脚步踩在草地上的声音,来使得人耳听起来更加明显,并在场景中对其他音乐、音频通过调整音量大小起到一定的突出作用。

意见:

1.如果你的声音比较小的话建议使用PCM或ADPCM,枪声,脚步踩在草地上这样的使用ADPCM

2.需要频繁使用的选择默认,比如背景音乐,或是频繁使用的音乐

一般默认就好

        <解压>当使用“Load Type”(加载类型)就是解压,在你需要播放声音的时候进行解压

里面分三种:

一、加载时解压缩(Decompress On Load):进入场景时进行解压,在需要时调用播放

二、压缩内存(Compressed In Memory):不解压,并不占用内存,会使用CPU算力进行解压,一边解压一边播放

三、流式处理(Streaming)不会进入到内存,直接存储在硬盘当中,在需要时直接调用,放一点调用一点

真正会减少内存的是后两种“压缩内存(Compressed In Memory)”和“流式处理(Streaming)”

意见:

1.不常出现的音乐使用“压缩内存(Compressed In Memory)”和“流式处理(Streaming)”以节省内

-------------------二次更新---------------------------

本次更细主要说说ogg的问题,博主发现大部分动画等工司等制作方都会用ogg这一格式使用,但我们在引擎开发过程中,因为ogg可能会造成很多问题。

首先是ogg本身的问题,ogg压缩他可以很大也可以很小。

为了保留原本的画质内容,或是保留无损的清晰度,因此在导出是使用ogg格式进行压缩封装处理,这样不计较大小的问题,尽最大程度保留原本音频、视频的清晰度,因此会导致出来的视频体积很大,如果电脑性能不太好还会卡顿,造成性能负担。

也可以像MP3等那样,损失一些清晰度等,降低体积大小。

博主在这里明确说明在使用引擎开发过程中慎重思考是否值得。ogg一大最显著的优势平台迁移!switch那种设备上视频完全上不了4k等高的画质质量,如果高还会造成卡顿这一问题,但游戏用ogg做好了,咋办?

这时ogg优势就出来了,可以用压缩软件控制下压缩体积,直接浪费些清晰度(反正他也用不了),我原本的程序也不用改。

那么同理,如果我放在好一点的设备上,提升画质,那我就直接控制下放上去就搞定了。

当然国内开发一般不会用ogg,像wav、MP4这类的大部分设备足够用了,他们也支持足够广泛,但如果你想要更加好的画面质量,还得是ogg

国外开发有不少用ogg这一格式,但往往对ogg的压缩率把控的很严苛,因此如果在使用ogg时还是要慎重,不要直接丢进程序里面去。

你可能感兴趣的:(unity,游戏引擎)