1.Unity的内存开销介绍
1.1 本机堆内存占用
在一个较为复杂的大中型项目中, 资源的内存占用往往占据了总体内存的70%以上. 因此, 资源使用是否恰当直接决定了项目的内存占用情况. 一般来说, 一款游戏项目的资源主要可分为如下几种: 纹理 ( Texture ) , 网格 ( Mesh ) , 动画片段 ( AnimationClip ) , 音频片段 ( AudioClip ) , 材质 ( Material ) , 着色器 ( Shader ) , 字体资源 ( Font ) 以及文本资源 ( Text Asset ) 等等. 其中, 纹理, 网格, 动画片段和音频片段则是最容易造成较大内存开销的资源.
具体资源优化应该注意的点:
- 纹理
- 纹理格式
- RGBA32和RGBA16格式的纹理资源, 较之”硬件支持”格式, 会在加载时占据更大的CPU 耗时
- ETC1 格式纹理, ETC1不带透明通道, 需要准备两个纹理 ( RGBETC1纹理 + AlphaETC1纹理 )
- ETC2 格式纹理. 对于Android 平台,该格式仅能在OpenGLES3.0 的设备上被硬件支持
- ASTC 格式纹理.A8开始支持 ASTC
- PVRTC 格式纹理. 支持iOS低端手机, 纹理尺寸必须是二次方正方形Unity是支持软解的, 在不支持的设备上是可以运行游戏的. 软解慢又占内存
- 纹理尺寸
- Mipmap功能
- Mipmap多级渐进纹理, 可以提高渲染速度, 减少图像锯齿; 但会增加而外的内存损耗
- Read & Write
- 开启该选项将会使纹理内存增大一倍. 这个纹理既在显存上, 又在内存上,
- 纹理格式