纹理内存优化

图片大小

图片大小一般采用小于等于2的次方大小
在Unity 中,如果图片的大小不是2的次方,如100*200Unity会在导入之后将其缩放为128*256的纹理、如果是129*256的纹理大小,则导入之后为256*256的纹理大小

Read/Wite Enable

开启Read/Wite Enable将允许自定义脚本访问,写入纹理数据。在运行时内存中会存储一份额外的贴图数据,使贴图大小翻倍,无特殊需要不要开启

不是渐变色图片处理

在Ps中,对于用不到256色的图片,进行减色处理,减少图片大小

RGB24和RGBA32

RGB的24位纹理和RGBA的32位纹理都是常见的图像格式,它们之间的主要区别在于纹理中存储的每个像素的颜色信息的位数和类型。

24位RGB纹理存储每个像素的颜色信息使用24个位,其中8个位分别用于存储红、绿和蓝三种颜色的分量。这种格式没有透明度信息,因此不支持透明度的效果。

32位RGBA纹理存储每个像素的颜色信息使用32个位,其中24个位用于存储红、绿和蓝三种颜色的分量,另外8个位用于存储透明度信息。这种格式支持透明度效果,可以在渲染时使用混合(blending)技术来实现透明效果。 -- ChatGTP

在游戏中选择使用哪种纹理格式通常取决于需要呈现的效果和资源的使用情况。如果需要呈现透明效果,或者需要在纹理中嵌入透明度信息,则应该使用32位RGBA纹理。如果不需要透明效果,则可以使用24位RGB纹理,这样可以减少资源占用,并提高渲染效率。

根据平台选择支持的纹理压缩格式

在对应平台上选择支持的压缩格式,如果是不支持的压缩格式,Unity会自动转换成RGBA32/RGB24格式,并且转换之前的内存也会保留,将消耗更多的时间, 内存
[//Todo 各个平台纹理压缩区别] (https://docs.unity3d.com/cn/current/Manual/class-TextureImporter.html)

Generate Mip Maps

  • 开启之后,可以让离摄像机较远的物体使用较小的纹理版本,但是运行时贴贴图大小将会变大。
  • 如果是图集开启了mipmap,图集中的图片必须应用于距离摄像机相近的位置,否则会增加每帧渲染所需的纹理大小,会导致DC降了,但是渲染速度反而变慢了

调整图集大小

图集通过9宫格调整大小,调整较小的图片,如1024*2048但是只超了一点点,可以通过编辑器工具或者手动优化成1024*1024

纹理压缩

Android 首选 RGBA Compressed ETC2 8 bits
iOS首选 RGB(A) Compressed AST 4x4 block

参考于
包体分析工具