Unity 音频理解与优化
音频的性能开销主要有两点:内存开销和CPU开销。
其中Load Type有三种类型:
- Decompress On Load:音频文件在加载完毕后,会被全部解压到内存中。这种方式会占据大量的内存,然而在播放时,由于音频之前已经被解压,所以其对CPU的开销很小。
- Compressed In Memory:音频文件以压缩格式存放于内存中,一边播放一边进行解压。这种模式的内存开销会比前一种稍小,但是播放时的CPU开销会较之更大。
- Streaming:音频文件不会被加载到内存,只有即将播放的一小段才会被读取到内存中。这种模式的内存开销最低,但是CPU开销也最大,因为其伴随着大量的磁盘读写操作和解压缩。
Compression Format主要也可以分为三种类型:
- PCM:完全不压缩格式,占据的硬盘和内存相对会较大,由于运行时不需要解压,所以它的CPU开销最小。
- ADPCM:一种古老的压缩格式,相对于PCM的压缩比为3.5:1,但是运行时的解压开销很小,对于音质有一定损耗。
- Vorbis/MP3:常见的压缩格式,主流平台全部支持的格式,压缩比较高,但是运行时的解压缩开销较大,对于音质的损耗更加严重。在iOS平台上一般设置为MP3,因为iOS支持MP3格式的硬解码。
项目选择
- 对于背景音乐,采用Compressed In Memory+Vorbis/MP3,因为背景音乐通常较大较长,所以内存开销就会比较大,这时候我们应该优先关注内存,同时也要使CPU开销没有Streaming那么大。
- 对于时长较短且频繁播放的音效,比如按钮点击音效,采用Decompress On Load+PCM,因为非常短的音效文件很小,所以内存开销就不那么关键,可能由于要播放多次,这时候CPU开销就很关键。
- 对于一般的音效,采用Compressed In Memory+ADPCM,你需要去试听其效果,如果觉得ADPCM失真太严重,可以将其换成PCM。
Unity 音频理解与优化相关推荐
- 第16章 Unity中的渲染优化技术
程序优化的第一条准则: 不要优化.程序优化的第二条准则(仅针对专家! 〉: 不要优化. 一一Michael A. Jackson 在进行程序优化的时候,人们经常会引用英国的计算机科学家Michael ...
- 腾讯是如何做Unity手游性能优化的
他山之石-腾讯是如何做Unity手游性能优化的 本文转载自:http://www.taidous.com/thread-44045-1-1.html?_dsign=ba1258b9 俗话说,用户体验不 ...
- unity 简单的性能优化
对于unity 中的性能优化现在最主流的做法就是减少Draw Call 数量,那么Draw Call 究竟是什么呢,要怎么样才可以减少呢.这是一个问题.........好吧,接下来我们就一起康康吧. ...
- 从Java代码到Java堆理解和优化您的应用程序的内存使用
从Java代码到Java堆理解和优化您的应用程序的内存使用 简介: 本文将为您提供 Java? 代码内存使用情况的深入见解,包括将 int 值置入一个Integer 对象的内存开销.对象委托的成本和不 ...
- UNITY 模型与动画优化选项
UNITY 模型与动画优化选项 1,RIG: Optimze Game Objects,[默认是没勾选的] 效果:将骨骼层级从模型中移除,放到动画控制器中,这样性能提高明显.实测中发现原来瞬间加载5个 ...
- Unity Shader着色器优化
对游戏开发者而言,着色器长久以来就是游戏开发中的重要部分,在Unity中编写并实现着色器的过程直观且高效,优秀的着色器还可以创造非常精美的游戏画面,同时保证极高的性能.今天将由Unity的技术工程师张 ...
- oracle stalestats_深入理解oracle优化器统计数据(Optimizer Statistics)
理解oracle优化器统计数据 首先来介绍oracle数据库使用基于规则优化器(RBO)来决定如何执行一个sql语句.基于规则优化器顾名思义,它是遵循一组规则来判断一个sql语句的执行计划.这组规则是 ...
- 深入理解图优化与g2o:g2o篇
深入理解图优化与g2o:g2o篇 内容提要 讲完了优化的基本知识,我们来看一下g2o的结构.本篇将讨论g2o的代码结构,并带着大家一起写一个简单的双视图bundle adjustment:从两张图像中 ...
- 移动互联网实战--移动端音频和图形优化处理
mumuxinfei 移动互联网实战--移动端音频和图形优化处理 前言: 移动端应用, 需要省电省流量(带宽), 大资源包对用户体验是有伤害的. 因此移动端开发需要精简资源(音频/图片), 但又要保证 ...
最新文章
- Android10.0 Binder通信原理(五)-Binder驱动分析
- 阿里巴巴陈武:通过亿级用户App的实践验证,锤炼高质量APM体系
- C Primer Plus_第8章_字符输入输出和输入确认_编程练习
- 发个上海英雄会聚会沙龙的公告 希望和大家一起见面交流探讨
- 在HTML网页中嵌入脚本的方式
- 动态代理的概述和实现
- leetcode 695. Max Area of Island | 695. 岛屿的最大面积(DFS)
- Maven项目的基本创建步骤
- Java基础入门笔记-链表与容器
- jquery级试题_腾讯2020前端面试题含答案解析
- 《用户故事与敏捷方法》读书笔记 04 客户团队
- struct Lnode *next
- 自适应增强算法Adaboost——前人栽树后人乘凉
- 苹果几最好用_苹果quot;官方保险quot;再升级,屏幕两年可以碎4次,值么?
- 淘宝上大量贩卖微信号,这些人买这么多微信号目的是
- bugku misc 11-15 解题报告
- 非常规的自我实现——听陆向谦讲创业
- python turtle隐藏画笔_Python turtle库的画笔控制说明
- 【架构设计】作为架构师你应该掌握的画图技术
- 记录1——stm32f411CEU6之点亮一盏LED灯+按键控制LED灯
热门文章
- airdrop无法点_AirDrop无法正常工作? 这是解决方法
- Linux和Win10双系统出现GUN GRUB解决方法
- 智慧图书馆解决方案-最新全套文件
- 记错本----git上传项目couldn‘t find remote ref master
- vue element-ui 优化打包 bundle js 大小
- 2020 mse 清华_2020年的北大清华在世界上属于什么水平?
- 获取 连接本地手机热点 的 的具体IP和MAC地址(其他手机或电脑)
- 高仿iReader书架效果
- 诗经 - 小雅 -伐木
- 触摸屏linux系统时间,关于Linux触摸屏驱动