Unity 声音资源优化

音频资源占用过高

这个连接是讲audioclip组件的一些信息:http://docs.unity3d.com/Manual/class-AudioClip.html 。
通过UWA在线资源检测查看音频片段页面,查看内存占用较高的音频文件是否合理。

大文件使用Streaming方式

在这里插入图片描述
可以看到有两个音频一个就占了将近16M的内存,这是十分不合理的。
在这里插入图片描述

  • decompress on load:在加载时解压,用于较小的音频。对于Vorbis编码的声音加载时将使用大约十倍的内存。因此不要对大文件使用此选项。
  • Compressed In Memory:将声音压缩在内存中并在播放时解压缩。此选项有轻微的性能开销(特别是对于 Ogg/Vorbis 压缩文件),因此仅将其用于较大的文件,因为加载时解压缩会使用大量内存
  • streaming:即时解码声音。使用最少的内存来缓冲从磁盘增量读取并动态解码的压缩数据。
    总结:可以看到使用占用的内存越来越小,但是消耗的CPU也越来越大。

不要勾选Preload Audio Data

官方解释:如果启用,则在加载场景时将预加载音频剪辑。如果未设置此标志,则音频数据将在第一个 AudioSource.Play()/AudioSource.PlayOneShot() 上加载,或者可以通过 AudioSource.LoadAudioData() 加载并通过 AudioSource.UnloadAudioData() 再次卸载。

在我们的游戏中,AudioSource上面有很多的声音,因此场景一初始化就占据了大量内存。因此不能勾选。
在这里插入图片描述

进一步理解:
一般音频文件的用法都是:
放在AudioSource组件中的audioClip属性,将音频文件包装在AudioClip对象中,然后可以通过AudioSource的Play或者PlayOneShot方法触发播放
这样做会使得每个音频文件都将在场景初始化期间加载到内存中,因为场景包含对这些文件的即时引用,在需要这些文件之前必须先解析这些引用(启用了preload audioData)

如果禁用了preload audioData,就会导致unity在初始化场景期间跳过音频资源的加载
会将加载活动推迟到需要使用的音频文件时,也就是当调用Play的时候

禁用后会加快场景的初始化,但第一次播放文件的时候,必须将阻塞主线程直至完成
如果资源文件过大,会导致时间过长,卡顿非常明显,这是接受不了的
(也可以调用AudioClip.LoadAudioData()可以实现音频加载)

Load In Background

如果启用,音频剪辑将在后台加载,而不会导致主线程停顿。默认情况下这是关闭的,以确保在场景中所有 AudioClips 已完成加载然后进入游戏能开始播放。请注意,仍在后台加载的音频剪辑上的播放请求将被推迟到剪辑完成加载。加载状态可以通过 AudioClip.loadState 属性查询。

进一步理解:
其实就是决定播放音频是同步的还是异步的,如果没有勾选,会阻塞主线程,等音频加载好了才播放。如果勾选了,就是一个异步过程,会导致Play和音频实际播放会有延迟。(禁用了PreLoad Audio Data的情况下,因为勾选了PreLoad Audio Data表明加载场景时候就加载好了音频)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KindSuper_liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值