---
title: "Unity性能优化全攻略"
author: "Perrin Yong"
author_profile: https://www.pystone.net/profile/
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/unity-performance-optimization-complete-guide/
type: note
content_role: unspecified
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/05-游戏图形与运行时/游戏性能优化/Unity性能优化全攻略.md"
content_hash: cb10334cc30a4cba76716a4d8916bdbc9e34029a7a91828f700ed444fd1dbb06
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# Unity性能优化全攻略

> 创建时间：2020/4/23 17:16

**标签：**|  _优化_

## drawcall

就是cpu对图形绘制接口的调用，CPU通过调用图形库（directx/opengl）接口，命令GPU进行渲染操作。

### CPU和GPU是如何进行并行工作和交互的

### 如何影响性能

每一次绘制CPU都要调用DrawCall，而在调动DrawCall前，CPU还要进行很多准备工作：检测渲染状态、提交渲染所需要的数据、提交渲染所需要的状态。
而GPU本身具有很强大的计算能力，可以很快就处理完渲染任务。
当DrawCall过多，CPU就会很多额外开销用于准备工作，CPU本身负载，而这时GPU可能闲置了。

### DrawCall优化：减少DrawCall

## Statistics

FPS超过30，就不卡（每秒渲染多少帧）
CPU：进行计算的绝对时间值
batches：对某些drawcall进行合并，合并成一批
Verts：摄像机视野中的顶点数
Tris：三角面个数
SetPass calls：Shader中包含很多pass

## 资源优化

### 声音优化

Decompress On Load
在硬盘上压缩这个文件，并在第一次加载到内存的时候解压它，这是加载声音文件的默认选项，大多数情况下我们应该使用这个选择 。
加载后解压缩声音，声音文件将在他们加载不久后就解压，这个选项适用于较小的压缩声音，以避免即时解压缩的性能开销。要知道在加载时解压 Vorbis编码的声音将使用的内存是压缩状态的十倍或更多（ADPCM编码大概3.5倍）所以不要使用此选项用于大文件。
Decompress On Load 默认选项适用于小文件。
Compressed In Memory
保持声音在内存中是压缩的并在播放时解压缩。这有更多的CPU开销（尤其是OGG / Vorbis格式的压缩文件），但可以提高加载速度并减少内存消 耗，因此这个选项适用于大文件。 在性能窗口可以看”DSP CPU”。
Compressed In Memory 适用于大文件。
Streaming 选项
直接从磁盘流音频数据。这只使用了原始声音占内存大小的很小一部分。 该方法使用最少的内存和最多的CPU，它有个很明显的缺点就是不能被引用超过一次。试着让 Audio Clip产生多个副本的时候会每个都产生数据缓冲区，如果非要这么做会产生大量的内存和cpu消耗。因此这个选择最好是给单实例的Audio Clip，如背景和环境音效。对于手游而言不要优先考虑使用这种方式。
————————————————
版权声明：本文为CSDN博主「CZandQZ」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。
原文链接：<https://blog.csdn.net/u012565990/article/details/51794486>
