![c42469e70c3a670cf24c69903493e251.png](https://i-blog.csdnimg.cn/blog_migrate/6a1eb5aead1a1f248c07e9b7748776ff.jpeg)
本文的内容偏项目设置,是对项目贴图在内存中的一个优化,没有标准答案,只是最近在公司看项目优化内容的一个总结。
命名规范
这里贴图指的是非模型贴图,主要指UI中使用的图集贴图,全屏背景等资源贴图~
- 项目中非图集Texture的存放目录 AssetsArtResResourcesUITexture
- 按照功能建立子文件夹,把对应功能的Texture放在相应的目录下面。命名规范遵循驼峰式,例子Activity_Sign,Delegate_Archor。
- 一些比较散的Texture存放在Others文件夹下,不要存在根目录下
UI贴图格式规范
为了更好的权衡显示和性能,我们都会对项目中的对贴图做了一些基础设置来进行优化。先来一张图对一些压缩格式做了对比:
![5712939f404c0cc6db61fa5f7c0b4bee.png](https://i-blog.csdnimg.cn/blog_migrate/393d219be3577cc553cd763d697788ed.jpeg)
Atlas相关设置
图集贴图均由美术使用外部工具TexturePacker打包,美术会上传图集的源文件到AssetsArtRes_UIAtlasSource目录下,格式为RGBA32,使用图片分离工具将原图RGB和A通道的信息分别存储到两张贴图里。
RBG贴图 -> AssetsArtResResourcesUIAtlas
Alpha贴图 -> AssetsArtResResourcesUIAtlasAlpha
为什么使用RGBA分离
- 基于Android平台,为了追求性能和兼容性,ETC1一直是一种高性价比的压缩格式,但是它有一个最尴尬的点,就是不支持Alpha通道,所以就需要把RGB和A做分离,这样RGB那张图就可以使用ETC做压缩(兼容OpenGL 2.0 +),然后加上一张存储Alpha信息贴图。
- 在分离之后,给分离贴图设置压缩格式,内存大小也会压缩,因此在保在保证效果的情况下,对内存也做了优化。
为什么使用1/4大小的RBGA存储
原本存储alpha信息只需要一张原始大小的Alpha8格式即可,但是Alpha8有些机型不适配,可能会FallBack这样反而增大了内存和性能的开销,所以现在用一张1/4大小的RGBA图片去存储A通道信息。
图集贴图在项目中的设置
![bc48a6a87867166cea340daf1c847f54.png](https://i-blog.csdnimg.cn/blog_migrate/c3eedb900250d0e03abe5a1979245f10.png)
![95261bda8a4d46cd4ada9fefa1155e30.png](https://i-blog.csdnimg.cn/blog_migrate/6ff5ee6231b4da1cdaf547c4c586b89d.png)
![07fb72f91b218067b71e580f1b624c28.png](https://i-blog.csdnimg.cn/blog_migrate/edddbe73775ee06e352423ff2a38afe6.png)
![9d798856a473f068c61844c06f2a3466.png](https://i-blog.csdnimg.cn/blog_migrate/55cee392dcfbc872e9e557e4b2c86e80.png)
UI中使用的Texture设置
为了做贴图压缩格式的设置,一般我们都会希望Texture的大小为2的幂次方。但是有些可能因为功能原因没有办法设置为2的幂次方,因此会设置成自定义尺寸,这些格式的文件都有相应的设置。
![6b4f4a10c66c977d1ff2d290324e632f.png](https://i-blog.csdnimg.cn/blog_migrate/3d4048831a77971cc42f48dbc8ed8620.png)
![6b4f4a10c66c977d1ff2d290324e632f.png](https://i-blog.csdnimg.cn/blog_migrate/3d4048831a77971cc42f48dbc8ed8620.png)
![9556c3827da54c5c30a87b75bd0d2a54.png](https://i-blog.csdnimg.cn/blog_migrate/18b39d71aac96bb45eec946f109a532f.png)
![3d72a86a4832d26817813e1fec221276.png](https://i-blog.csdnimg.cn/blog_migrate/7eda5894af679ab1dd38999514de75f0.png)
![fe9ff8433130b4cd29acf09a0a0a41ba.png](https://i-blog.csdnimg.cn/blog_migrate/1b1c5ff27d9cd0f354e0afac7d2edf80.png)
![806f3b20040c15337d6bab4ce2ebfe86.png](https://i-blog.csdnimg.cn/blog_migrate/56a3b69d29024aec7c69efc4b37080a7.png)
![eeb6b18c45ecfa63d842576b2932b85f.png](https://i-blog.csdnimg.cn/blog_migrate/50050883f6dc9fc02c5cfe95868a06ec.png)
![3ed842f8818e5aa3dffbe7e2bd33bd84.png](https://i-blog.csdnimg.cn/blog_migrate/be1c282ed18b0f34adb219a737587913.png)
工具支持
贴图文件一般都由美术同学上传,但是真正明白这些贴图压缩含义并进行正确设置的美术还是比较难,所以会建立一个配置文件,存储每一个UITexture文件夹下的所有贴图的设置信息。然后在文件Import的时候在PostProcessor里面统一去刷一遍格式。