Unity纹理导入设置和纹理压缩格式选择
纹理导入窗口(面板)
纹理导入参考Unity官方手册 Unity手册/图形/纹理/导入纹理
Texture Import Settings 窗口定义 Unity 如何将图像从项目的 Assets 文件夹导入 Unity Editor。
要访问此窗口,请在 Project 窗口中选择图像文件。此时会在 Inspector 中显示 Texture Import Settings 窗口。
纹理类型 Texture Type
使用 Texture Type 属性可选择要从源图像文件创建的纹理类型。
- Default
这是用于所有纹理的最常用设置。此选项可用于访问大多数纹理导入属性。
- Normal map
法线贴图,选择此选项可将颜色通道转换为适合实时法线贴图的格式。
- Sprite (2D and UI)
如果要在 2D 游戏中使用该纹理作为精灵,请选择此选项。
- Cursor
如果要将纹理用作自定义游标,请选择此选项。
- 光照贴图
如果要将纹理用作光照贴图,请选择此选项。
- Single Channel
如果在纹理中只需要一个通道,请选择此选项。
纹理形状 Texture Shape
使用 Texture Shape 属性可选择和定义纹理的形状和结构。
有四种形状类型:
- 2D 最常用设置,将图像文件定义为 2D 纹理。
- Cube 纹理定义为立方体贴图。例如,可将其用于天空盒或反射探针。
- 2D Array 将纹理定义为 2D 数组纹理。这通常用作某些渲染技术的优化,其中会使用许多具有相同大小和格式的纹理。
- 3D 将纹理定义为 3D 纹理。某些渲染技术使用 3D 纹理表示体积数据。
特定于纹理类型的设置和高级设置
- sRGB (Color Texture)
一般选中此复选框。如果纹理存储了有特定含义的信息,并且您需要着色器中的确切值(例如,平滑度或金属度),请禁用此属性。
- Alpha Source
指定如何生成纹理的 Alpha 通道。
- Alpha is Transparency
如果指定的 Alpha 通道为透明度 (Transparency),则启用此属性可扩充颜色并避免边缘上的过滤瑕疵。
- Non Power of 2
如果纹理具有“非 2 的幂”(NPOT) 尺寸大小,此属性将定义导入时的缩放行为。一般情况下,此设置为 None,即纹理尺寸大小保持不变。
- Read/Write Enabled
仅在需要脚本访问纹理数据时才应启用。在内部,Unity 使用纹理数据的副本进行脚本访问,这会使纹理所需的内存量增加一倍。因此,默认情况下会禁用此属性。
- Generate Mip Maps
Mipmap 是纹理的一系列较小版本,适合纹理在屏幕上非常小时使用。UI元素中一般用不到,不要打开。
- Wrap Mode
纹理平铺时的行为方式。默认选项为 Repeat。
- Filter Mode
纹理在通过 3D 变换拉伸时如何进行过滤。默认选项为 Bilinear。
特定于平台的设置
当为不同的平台构建(Building)时,需要考虑分辨率、文件大小以及相关的内存大小要求、纹理的质量,以及每个目标平台使用的压缩格式。
特定于平台的覆盖设置面板,为不同目标平台分别提供一个选项卡。
一些纹理导入设置也可以在“构建设置”(Build Settings)中全局覆盖,提高开发效率。
- Max Size
设置导入的纹理的最大尺寸(以像素为单位)。通常是2的幂(POT)尺寸大小
- Resize Algorithm
当纹理尺寸大于指定的 Max Size 时,选择一种算法来缩小纹理尺寸。
- Format
绕过自动系统来指定用于纹理的内部表示。可用格式的列表取决于平台和纹理类型。
- Compression
选择纹理的压缩类型。
- Split Alpha Channel
对此纹理进行 Alpha 通道分离
- Override ETC2 fallback
允许选择在不支持 ETC2 纹理格式的 Android 设备上解压缩纹理使用的纹理格式。
导入设置需要注意的一些问题
- 对于我们使用的纹理,需要尽量为POT,这样能提高渲染性能
- Read/Write Enabled 该选项打开时,可以在代码中直接获取图片的像素信息。但会使占用内存翻倍。一般需要取消勾选。
- Generate Mip Maps 这个是用来生成Mipmaps的,UI元素中一般用不到。不要打开。
- Filter Mode 一般选Blinear。
纹理的压缩
纹理压缩格式参考Unity官方手册 Unity手册/图形/纹理/纹理压缩格式
虽然 Unity 支持许多常见的图像格式作为导入贴图的源文件(例如 JPG(有损不透明)、PNG、PSD 和 TGA),
但在 3D 图形硬件(如显卡或移动设备)的实时渲染过程中不会使用这些格式。
3D 图形硬件要求纹理以专门格式进行压缩,这些格式针对快速纹理采样进行了优化。各种不同的平台和设备都有自己不同的专有格式。
贴图格式的选择直接影响游戏的品质和性能。
纹理压缩格式的选择
如果需要尽可能的支持更多的设备:IOS端可以使用PVRTC,安卓使用ETC。
如果愿意抛弃一部分低端的机器:IOS端可以用ASTC,安卓用ETC2或ASTC。其中ASTC的效果更好,压缩比更高。
- ETC:
安卓推荐格式,长宽为4的倍数,不支持Alpha通道,压缩率较高。
- ETC2:
安卓推荐格式,长宽为4的倍数,支持Alpha通道,内存占用较ETC更大,画质较好。搭配Unity的Crunched算法,效果更佳。
在不支持 ETC2 的 Android 平台上,纹理在运行时解压缩为 Build Settings 中的 ETC2 fallback 指定的格式。
- PVRTC:
iOS推荐格式,适配所有IOS设备,带Alpha的图像效果较差,不带Alpha的图像效果一般。PVRTC的尺寸限制比较大(正方形+长宽2的幂)。
- ASTC:
iOS推荐格式,不要求原图像尺寸,有多种压缩格式可选(如4x4(高质量) 6x6(正常质量)),压缩率较高,画质好,但部分机型不支持(如iPhone5s,iPad mini2,iPad Air)。
在不支持的设备上,贴图会解压成RGB(A),然后与压缩的贴图一起存储在内存中,会增加纹理加载时间和增加额外内存。
- BC7:
主机平台要求较高质量时使用。
- RGB24/RGBA32:
适用所有设备,内存占用太高,移动平台基本不会直接使用,但是效果确实好。
纹理设置相关总结
UI的Mipmap不要开,UI不会发生Mipmapping的情况,除非你设计的纹理尺寸比实际用到的要大很多。
一些2.5D的固定视角游戏有时候也不开,目的是追求清晰度。
模型的纹理资源的Mipmap一般是要开的。
游戏的Loading图一般是对应的设备上的压缩格式,比如安卓ETC2、iOS上ASTC,其实Loading图一般不透明,PVRTC也够用了。
尺寸按照UI需求一般是和设计分辨率一致。这个也完全看缩小之后的效果UI是否满意。
Loading图注意及时卸载,只增加峰值,不常驻占用,内存影响不大,包体方面一般没这么敏感。
移动平台的纹理贴图基本上可以统一使用ASTC。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了