Uinty3D性能优化之声音资源科普篇

本文介绍了常见的音频格式如WAV、MP3、OGG的特点及适用场景,并详细讲解了Unity中音频资源的不同加载类型和压缩格式对CPU和内存的影响,为游戏开发中的音频优化提供了实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

音频格式

WAV:微软公司开发的一种声音文件格式,简单的编/解码、普遍的认同/支持以及无损耗存储,目前Windows上最流行的声音文件格式,资源大,不推荐

MP3:是MPEG标准中的音频部分,大小只有WAV文件的1/10,是一种有损压缩数字音频格式,失真小,适合音质要求高的文件,例如BGM

OGG:是一种新的音频压缩格式,类似MP3的音乐格式,它是完全免费、开放和没有专利限制的。压缩比高,适合人声、音效等

Unity声音资源

压缩的:压缩声音是通过从编辑器导入设置选择compressed选项,音频数据将很小,但在播放时会消耗CPU来解码

原生的:对于短音效使用未压缩音频(WAV,AIFF)。音频数据将较大,但是声音在播放是不需要解码

Snipaste_2020-06-01_10-35-21

Force To Mono:转化为单声道,一般手机使用单声道足够满足需求

Normalize:单声道标准化

Load In Background:单独线程加载,不阻塞主线程,如果直接放在场景里,会在场景加载的时候一起被加载

Ambisionic:立体声

OriginaSize:磁盘大小,播放时要占的RAM内存

ImportedSize:导入内存大小,打包时用的内存

Ratio:ImportedSize占OriginalSize比例

应该注意的优化

Total Audio Source:总资源数

AudioClipCount:缓存的音频数量

AudioVoices:当前播放的音频个数

TotalAudioMemory :实际占用的内存大小

Total Audio CPU,Streaming CPU :CPU的消耗

OGG就相当于一个容器,Vorbis是一种音频压缩机制,像一些后缀名为.ogg的文件,表明这里面只包含Vorbis 音频


Load Type类型特点
Decompress On Load加载时解压缩未压缩的音频将存储在RAM中。需要的内存最多,但是播放它CPU消耗小,适合较小压缩声音,不要对大型文件使用,会消耗最高的内存。处理较小的声音(load就解压)
Compressed In Memory压缩在内存中压缩后的音频剪辑存储在RAM中,播放时将解压缩,CPU消耗比较大(尤其是对于Ogg / Vorbis压缩文件),适合对较大的文件。较大的声音(保持解压的状态)
Streaming即时解码音频永久存在设备上(硬盘或闪存上) ,播放流媒体方式(边加载边播放),不需要RAM进行存储或播放,使用最少的内存来读取并即时解码压缩数据,解压缩在单独流线程上,CPU消耗比较大,适合背景音乐,明显降低内存占用使用最少的内存来缓冲压缩数据(很长的音乐)
Compression Format压缩格式特点
PCM以较大文件大小提供更高质量非常短的音效是最好的,质量高,文件大
ADPCM压缩率比PCM小3.5倍,但CPU使用率比MP3/Vorbis低得多噪音多并且大量播放声音,如脚步声音,撞击声
Vorbis/MP3压缩后文件较小,比PCM质量低最适合中等长度声音,质量低
Sample Rate Setting采样率设置特点
Preserve Sample Rate保留采样率(默认)使采样率保持不变
Optimize Sample Rate优化采样率按最高频率自动优化采样率
Override Sample Rate覆盖采样率允许手动覆盖采样率
  • 总结:加载类型和压缩格式主要是会影响到CPU和内存。压缩率越高文件就小,包体小,但是解压缩占用的内存就大,CPU消耗也大。所以没有最合适,只有相对合适。
  • Streaming+Vorbis,使用最少的内存,但需要更多的CPU消耗和硬盘I/O操作;
  • Compressed In Memory+Vorbis,磁盘I/O操作被替换成内存的消耗,可以调整“Quaility”滑块以减小压缩剪辑的大小,以交换音质,一般推荐70%左右。
  • 项目是采用:
  • 长度<10:Compressed In Memory + Vorbis
  • 长度>10:(背景音乐)Streaming + Vorbis

转载请声明出处:https://www.cnblogs.com/wwhhgg/

### Unity3D 科普知识及常见问题 #### 什么是 Unity3DUnity 是一种实时 3D 互动内容创作和运营平台,广泛应用于游戏开发、美术设计、建筑设计、汽车设计以及影视制作等领域[^1]。它不仅是一个强大的游戏引擎,还提供了完整的软件解决方案,帮助创作者实现从创意到成品的全过程。 #### Unity 支持哪些领域的内容创建? Unity 可用于创作、运行和变现各种类型的实时交互式 2D 和 3D 内容。其应用范围涵盖了手机、平板电脑、个人计算机、游戏主机、增强现实(AR)、虚拟现实(VR)等多种设备和支持环境。 #### Unity 中常见的报错异常有哪些? 以下是 Unity 开发过程中可能遇到的一些典型错误及其解决方法: 1. **NullReferenceException** 这种错误通常发生在尝试访问未初始化的对象时。开发者可以通过检查对象是否为空来避免此类错误。 2. **IndexOutOfRangeException** 当数组索引超出有效范围时会触发此错误。确保在访问数组之前验证索引的有效性可以防止该问题的发生。 3. **MissingComponentException** 如果脚本试图访问不存在的游戏对象组件,则会出现这种错误。建议通过调试工具确认目标对象确实拥有所需的组件。 4. **WebGL 构建失败** 使用 WebGL 模板构建项目时可能会因配置不当而失败。官方文档提供了详细的设置指南,遵循这些指导可以帮助解决问题[^2]。 #### 如何获取更多关于 Unity 的学习资源? 对于希望深入学习 Unity 的用户来说,官方网站上的教程是非常宝贵的参考资料。例如,“使用 WebGL 模板”这一章节就详细介绍了如何利用模板完成特定功能的搭建工作。 ```csharp // 示例代码:检测 NullReferenceException if (gameObject != null && gameObject.GetComponent<Renderer>() != null) { Renderer renderer = gameObject.GetComponent<Renderer>(); renderer.enabled = true; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值