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。

posted @   森姜大魔王  阅读(1331)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示