Unity 的音频图片优化

记:为什么要写这个?网上很多的优化资源帖子 写的都很好 我写是因为虽然做了笔记但是还是老是会忘记 so.....

一:音频

 1:声音类型

  (1):aif/aiff 适用于短小音乐文件 做打斗重复音效
 (2):wav适用于短小音乐文件 做打斗重复音效
 (3):mp3 适用于长音乐文件 做bgm
 (4):ogg 适用于长音乐文件 做bgm(ogg比MP3要小吧 不能做打斗音效吗)   
   ps: pc 主机等非移动平台ogg是比MP3要好的选择方式 ,MP3更适用于移动设备(iphone自带MP3解码器)
           如果是音乐或是音效 要使用无缝LOOP的时候,建议使用OGG作为源文件 。并采用硬件播放方式从而减少内存的损耗。

2:导入设置

 
(1)Force to Mono: 强制单声道,有些“不重要”的音频不需要左右声道,我们可以勾选这个 减少内存

(2)load in background: 剪辑的加载将在单独的线程上延迟发生,而不会阻塞主线程。如果启用,音频剪辑将在后台加载,而不会在主线程中导
        致 停顿, 这在默认情况下是关闭的,以确保所有音频剪辑在场景开始播放时已完成加载的标准Unity行为。请注意,音频剪辑上仍在后台加载
        的播 放请求将被延迟, 直到剪辑完成加载。 加载状态可以通过AudioClip.loadState属性来查询。

(_)Ambisonic(2017 版本) 高保真立体环绕音 在360全景和 XR更加适用

(3)loadType 有三种
 [1]:decompress on load 一经加载的时候解压,用于频繁使用的音频 注意,在加载时解压缩Vorbis编码的声音比使用它压缩的内存大约多十倍
     (对于ADPCM编码大约是3.5倍),所以不要在大文件中使用这个选项。

 [2]:compresse in memory 内存中是压缩播放时解压 会增加cpu但是节约内存 只用于较大文件 解压缩在混音器线程上进行,可以在Profiler窗口
        的音频面板的“DSP CPU”部分进行监视

 [3]:Streaming 流方式读取 节约最小cpu和内存 缺点是只能被引用一次 用于单例音频 适用于 bgm (这种方式手游不优先考虑)
    注意:即使没有加载任何音频数据,流式片段也会有大约200KB的过载。

(4) preload audio data 预加载 会在场景一开始就加载 

(5)compress format 压缩格式
 [1]: PCM 提供高品质文件会比较大 适用于很短的音效上
 [2]: ADPCM 适用于大量使用的音效 例如脚步 子弹等 比PCM少3.5倍,cpu使用率远低于vorbis/mp3 是这些重复使用的音效的首选
 [3]: Vorbis/mp3 比PCM小但是品质低 比ADPCM消耗更多的cpu 移动设备首选(自带解码器 iphone 选MP3 Android选vorbis) 勾选这个
        还能调节quality, 这种格式最适合中等长度的音效和音乐。
  [4]:HEVAG这是在PS Vita上使用的原生格式。这个规格与ADPCM格式非常相似。

(6) sample rate setting 采样率设置 PCM和ADPCM压缩格式允许自动优化或手动采样率降低
  [1]: Preserve Sample Rate 保持采样率不变
  [2]:Optimize Sample Rate 优化采样率 此设置根据分析的最高频率内容自动优化采样率
[3]:Override Sample Rate 覆盖采样率 允许手动覆盖采样率,因此可以有效地用于丢弃频率内容

3:使用第三方插件的时候禁用自带的音频

 

4:另外的一些Tips

 (1)一般来说,PCM和Vorbis / MP3格式是可取的,以保持声音尽可能接近原始。 PCM对CPU的要求非常轻,因为声音是未压缩的,只能从内存中
        读取。   Vorbis / MP3允许通过质量滑块自适应丢弃较少的可听信息。
(2)ADPCM是内存和CPU使用率之间的折中,因为它只使用比未压缩的PCM选项稍多的CPU,但产生恒定的3.5压缩因子,这通常比使用Vorbis或
          MP3可以达到的压缩要差3倍压缩。 此外,ADPCM(如PCM)允许使用自动优化或手动设置的采样率,这取决于声音的频率内容和可接受的
            质量损失
(3) 模块文件(.mod,.it,.s3m..xm)可以以极低的占用空间提供非常高的质量。使用模块文件时,除非特别需要,否则请确保将“加载类型”设置
        为“Compressed In Memory  因为如果设置为“Decompress On Load 整首歌曲将被解压缩。这是Unity 5.0中的一个新行为,它允许在这些类型的
        剪辑上使用GetData / SetData,但是跟踪器模块的一般和默认用例是将它们压缩到内存

二:贴图

            1:贴图的导入

            (1)如果图片是作为UI那么去掉Generate Mip maps 一般不勾选read/write enable(除非要对图片进行读写才勾选)。 

            (2)ui图片小图片打包成图集,大图片一般不打图集(大图会把图集撑大)。 

            (3)对于不必要使用透明通道的图片,可以使用jpg代替png,图形学决定图片的像素大小都要遵循2的n次方,UI图集会默认遵循这个原则,但是对于单个图片,可以在图片导入进行设置(一般勾选toNearest(最接近))

            

            2:图片压缩方式

               Android:android所有机器都支持etc1压缩方式,但是etc1不支持透明通道。etc2是支持透明通道的,但是这是基于opengl3.0,在某些低端机无法使用。目前很多使用最多的是etc1+alpha通道分离技术,在unity5.3以后 unity自带etc1分离技术


        注意点:必须打图集,只有图片是2的n次方的图片才能使用etc1压缩,导出apk的时候如果出现材质丢失,在Project Setting--Graphic--Always Included Shaders里面添加 UI/DefaultETC1,可以看另一个链接

IOS:使用PVRTC格式压缩,它支持含Alpha通道的图片压缩。

PC:有偷透明通道的压缩为DXT5,没有透明通道的使用DXT1

另外,unity 5.3Crunch压缩库是一种很好的压缩方式 缺点就是压缩计算时间有点长,官方链接




猜你喜欢

转载自blog.csdn.net/K20132014/article/details/79199954