大家好,今天小白给大家分享下我最近遇到的与unity音频相关的两个问题以及解决方式,欢迎一起交流学习。
1、问题引入
在制作音乐播放器时,有一项是为了展示3D声音的效果,需要在移动端触摸以拖动音频源,在拖动音频源过程中,会发现有轻微的杂音,起初没有引起注意。后来展示时同事提出:在移动的过程中为什么有杂音呢?于是接下来,就详细了解Audio Source中与音频相关的一些参数。
在Audio Source的3D Sound Settings栏有个Dropper Level参数,根据Unity圣典给出的解释是:
Determines how much doppler effect will be applied to this audio source (if is set to 0, then no effect is applied).决定了多少多普勒效应将被应用到这个音频信号源。(如果设置为0,就是无效果)
在Unity中,将鼠标放在Doppler Level处,可以看到:Specifies how much the pitch is changed based on the relative velocity between AudioListener and AudioSource. 根据AudioListener和AudioSource之间的相对速度指定音高的变化程度。
好了,到这里我们应该就明白了,移动音频源过程中产生杂音的根本原因了,即:多普勒效应。
2、什么是声音的多普勒效应?
生活中声音的多普勒效应非常容易感受到,嗡嗡的火车声是最令人深刻的。那么声波的多普勒效应的原理到底是什么呢?
我们知道人能听到声音的原因是声波传递到了耳朵中,而能分辨出音调的高低是因为波的频率的不同。
那么现在假设我们站在某处不动,一辆车也在某处鸣笛那么此时声音的传播就是正常的!但当这辆车高速向我们驶来时,就好像“波在赶着波”这就导致我们单位时间接收到的波峰变多了,也就成为了频率变高了!同理当这辆车加速原理我们时,就相当于波“加速远离”我们,导致我们单位时间“接收的波峰”变少了,也就是频率变低了!这就会使我们听到三种音调不同的声音!
其实简单来说就是当声源和测试者的相对位置靠近时,测试者听到的声音的频率增大;而相对位置增加时,测试者听到得声音的频率就会变小。其实道理很简单的。(当移动音频源(AudioSource)时,它与AudioListener之间的相对距离在改变,所以会产生多普勒效应,从而改变了听到的声音的频率,就出现了所谓的杂音。)
3、怎么解决?
知道了产生问题的原因,根据Unity圣典:Determines how much doppler effect will be applied to this audio source (if is set to 0, then no effect is applied),将Dropper Level设置为0,这时再移动音频源,就不会因为多普勒效应产生杂音了。
1、问题描述
在音频播放过程中,出现了声音卡顿很严重的现象,起初并没有这种问题,后来仔细回想了之前的操作,发现是出于减小apk的体积的目的,修改了音频的加载方式(Load Type),从之前的:DeCompress On Load(默认的)修改到了Streaming,就导致了声音播放卡顿的现象。
2、Unity中音频剪辑加载方式?
Load Type:(加载类型)
DecompressOnLoad : 音效文件加载后为解压缩状态,好处是耗费CPU少。
CompressedInMemory :音效文件在内存中保持压缩状态,占用内存少,但是耗费CPU,当使用该音效时首先要CPU对其进行解压,然后才能使用。
Streaming:当播放该音效时,从磁盘以流的形式加载音效数据,好处,占用内存最少,因为只有很少的缓冲数据占用内存。
3、问题解决
将LoadType修改成默认值即可解决音频剪辑播放卡顿现象。
本篇主要是简单介绍了遇到的两个与音效相关的问题,简单整理了下分享出来,欢迎一起交流学习。