当前位置:   article > 正文

audio unity 加速_浅谈Unity中Android、iOS音频延迟

unity audiosource.play延迟

在Unity上面做音游,当在移动端实机运行起来,会发现,音频的发出会有一定的延迟,无论是长音效还是短音效,Unity内置的Audio内部使用的是FMOD,有以下手段改善

通过设置稍微改善其延迟的问题

Edit → Project Settings → Audio → 设置DSP Buffer size为Best latency(设置 dsp 缓冲区大小以优化延迟或性能,设置一个不合适的值会导致安卓设备的电流音)

音频文件的Load Type为Decompress On Load(让音频提前读取到缓存中)

让音频文件越小越好

代码来获取准确的音轨采样时间

糟糕的方式

AudioSource audioSource;

//100ms延迟

float GetTrackTime()

{

return audioSource.time;

}

好的方式

//20ms延迟

float GetTrackTime()

{

return 1f * audioSource.timeSamples / audioSource.clip.frequency;

}

更好的方式

double trackStartTime;

void StartMusic()

{

trackStartTime = AudioSettings.dspTime + 1;

audioSource.PlayScheduled(trackStartTime);

}

double GetTrackTime()

{

return AudioSettings.dspTime - trackStartTime;

}

最好的方式

Stopwatch stopwatch = new Stopwatch();

void StartMusic()

{

audioSource.Play();

stopwatch.Start();

}

double GetTrackTime()

{

return stopwatch.ElapsedMilliseconds/1000f;

}

//timeSample的Get方法受限与音频异步的问题是有20ms的延迟的,但是Set方法几乎没有延迟

void SetTrackTime(float time)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/140572
推荐阅读
相关标签
  

闽ICP备14008679号