在这里插入代码片
前言
• 目的:力求寻找画面表现与性能优化的平衡,减少项目产生的性能和重复操作问题。
• 要求:立项前期,美术资源应当力求规范化,严格落实本规范。
• 注意:本规范需要在立项或技术预研前期做动态调整。
• 解决方案:提供部分unity资源导入的自动化解决脚本
a) 纹理资源的自动化脚本
b) 网格和动画资源的自动化脚本
c) 粒子系统的自动化脚本
纹理资源的规范
规范
纹理资源模块是Unity资源占比最大的模块
以下是具体的纹理规范:
不要勾选Read/Write Enabled
UI纹理不要勾选Generate Mip Maps
UI纹理的WrapMode用Clamp防止边缘问题
纹理资源命名规则
设置压缩格式
不要勾选Read/Write Enabled
在大多数情况下不需要使一个像素级别已经加载在纹理中的读写操作,不要打开开关,正确会导致额外的双倍内存占用。
UI纹理不要勾选Generate Mip Maps
UI纹理关闭MipMaps,可以节省33%的内存容量。其它贴图为了节省,也可以关闭
UI纹理的WrapMode用Clamp防止边缘问题
由于纹理采样的精度问题,一张纹理倍缩小显示的时会采样相邻的像素。如果被设置成Repeat,会导致边缘产生错误的分割线
- 纹理资源命名规则 只能由以下三种字符组成
• 字母
• 数字
• 下划线_ - 设置压缩格式
• Unity支持的图片格式
包含bmp exr gif hdr iff jpg png pict psd tga tiff
• 关于纹理格式
文件格式是图像为了存储信息而使用的编码方式,但是他不能被CPU所识别,GPU的特性是 做向量运算;因此这些文件被游戏读入时还需要CPU解压成R8G8B8等像素格式,再传送到 GPU端使用;而在运行时做解压无疑是非常耗的,所以一般在图片源文件导入时就会为其生 成纹理格式的文件。 纹理格式是可以被GPU所识别的像素格式,可以被快速寻址采样。 但是直接使用这种纹理格式会导致资源的加载时间长、内存占用大的问题,尤其在移动平台 上更加明显,因此,为了解决这个问题,就出现了压缩纹理格式;
纹理格式根据立项设备端动态修改 参照如下:
尽量避免RGBA32和ARGB32纹理的使用,因为这种格式一般属于高清晰的,但也比较耗;
RGBA16格式的加载效率也很高,接近于ETC1/PVRTC,设备越好,差距越小,因此在ETC1/PVRTC的效果不够好时,可以尝试用RGBA16;
粒子贴图大小一般要在256x256以下;
对于模型、场景贴图,我们需要根据不同用途的贴图做不同的压缩处理,如果使用ASTC格式,可以参考NVIDIA官网给出的测试数据来选择;
对于Android和IOS平台,纹理格式的具体选择参考UWA解析
Unity官方文档纹理解释路径:Unity 文档 (版本)/图形/Meshes, Materials, Shaders and Textures/纹理/导入纹理/特定于平台的覆盖的纹理压缩格式
• 各平台纹理格式参考如下
内容待更新2022年3月15日
以下是我提供的脚本,调整好需要操作的路径可以自动调用Importer类完成设置工作
自动化优化导入的美术资源选项