| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity音频基础知识 -> 正文阅读 |
|
[游戏开发]Unity音频基础知识 |
Unity音频基础知识前言之前一直没有细研究过Unity的音频策略和优化机制,在此学习完过后作下笔记。 基础知识所谓音频采样率,即每秒采样多少次,人们常说的音频音质就是采样率。采样率越高,音质越好,大小越大。一般来说,CD的采样率/音质是44100HZ。 所谓音频采样精度,即每次采样的结果用多少位存储。最常见的是用16位,即2个字节来存储。 所谓音频采样时间,即音频的播放时间。 所谓音频声道,即采样的位置数量,从几个位置进行采样就是几声道。 所谓音频解码,即压缩音频的解压缩。音频必须解码之后才能进行播放。 所谓码率,即采样率 * 采样精度 * 通道数。 一个未压缩的音频大小在内存中所占 = 采样率 * 采样精度 * 通道数 * 采样时间 = 码率 * 采样时间 音频格式Unity支持以下四种音频格式: .aif:苹果开发的一种音频格式。 .wav:Windows开发的一种音频格式。 .mp3:一种有损压缩音频格式。 .ogg:一种有损压缩音频格式。 音频设置Force To Mono:将多声道的音频在打包前强制混合成为单声道。为什么要强制混合成单声道呢?官方的解释是:混合的过程一般会产生更安静的信号,因此峰值归一化的信号给了更多调整音量大小的空间。但是我觉得更多的应该是极大程度上减少了音频文件的大小。试想一下,直接从双声道减少一个声道变为单声道,可以减少多少数据。 Normalize:在Force To Mono的混合过程中使用音频标准化。所谓的音频标准化可以参考wiki。 Load In Background:音频加载时将在单独的线程上延迟进行,不会阻止主线程。即异步加载音频,可能会导致播放音频出现细微的延迟。默认情况下是关闭的。 Preload Audio Data:音频会在加载场景之前进行加载。默认情况下是打开的。所以说,如果音频文件设置是Unity默认的状态,即打开Preload Audio Data,关闭Load In Background,那么当场景加载完成时,场景中所需要的音频文件就已经完全加载完成了。但是需要注意的是,只有Unity知道的需要用到的音频,也就是场景中引用到的音频,才能采取上述的预加载机制。对于那些没有进底包,放在AB包中动态加载的音频,Unity没法帮使用者自动加载。如果是关闭的状态,音频数据只有在调用播放接口前或者主动加载才会进行加载。 Ambisonic:环绕立体混响声,即开启3D音频。 压缩格式PCM:无压缩,速度最快,适合小音频。 ADPCM:压缩率小,速度较快,适合需要大量播放的不追求品质的音频。 Mp3:压缩率较大,速度较慢。 Vorbis:压缩率大,速度最慢,适合中长音频。在Unity中可以自主调节压缩率。 采样率设置Preserve Sample Rate:原始采样率。 Optimize Sample Rate:自动优化设置采样率。 Override Sample Rate:手动设置采样率。 加载方式Decompress On Load:整个音频文件加载到内存中后对其立即进行解压,最终内存占用为解压后的音频大小,即未压缩的音频大小。播放的时候没有延迟,但是一般来说,大音频文件由于未压缩版本占用内存过大,所以尽可能地减少对大音频文件应用此机制。 Compressed In Memory:整个音频文件加载到内存中后不立即进行解压,当音频播放的时候进行解压,最终内存占用的是压缩后的音频大小。但是相比上面一种机制来说,这种机制在播放时会有一丢丢延迟,解压速度不同,播放的延迟也就不同。所以说这种机制应用于大音频文件是比较合适的,既不会占用过多内存,又能接受解压带来的CPU开销和细微播放延迟。 Streaming:直读直放的模式。这种模式使用尽可能小的内存来缓存从磁盘中逐渐读取的数据,并且立刻解码播放音频,播放完后及时释放。但是这种模式的CPU开销是最高的,音频的播放延迟取决于频繁I/O的开销,所以说算是CPU换内存的一种方式。所以说,对内存压力比较大的项目,首选这种模式是不错的选择。除此之外,这种模式也比较适合大音频,或者只需要播放一次的音频。 音频优化如果没有必要使用多声道,请一定要勾选强制转换为单声道的选项,这会使得音频大小减少很多。 如果对音效质量要求没有那么高,那么采样率可以适当降低一点,压缩格式可以选择压缩率高的选项。 如果对播放延迟特别敏感,那么最好选择Decompress On Load机制,虽然内存占用会大一点,但是一般来说需要无延迟播放的音效都不会很大。可以接受延迟的话,就最好选择Compressed In Memory来减小内存开销。 虽然不太建议使用Streaming方式,如果项目的内存是主要问题的话,尝试使用Streaming方式用CPU换内存也是不错的选择。 音频引擎待补充… 小结音频虽然在一个项目中看上去微不足道,但是音频优化确实还是有很多东西可以学习和了解的,比如对内存、对CPU等。 最近家里添了新成员,耽误了一会学习。 总之,学就完事了。 参考https://docs.unity3d.com/cn/2020.2/Manual/class-AudioClip.html https://blog.csdn.net/chenfujun818/article/details/81710895 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/28 11:43:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |