Unity 图片导入设置

default

Texture Type

图片的导入类型, 不同的类型适用于不同的应用场景, 也会有不同的设置属性.

选项 含义
Default 默认. 提供对大多数属性的访问以进行图片导入.
Normal Map 法线贴图. 此选项可将颜色通道转换为适合实时法线贴图的格式
Editor GUI and Legacy GUI 编辑器 UI 和传统 UI 类型. 当一张图片要被用来作为编辑器的 UI 或者被 GUI 类所使用的时候, 选择此选项.
Sprite (2D and UI) 当图片需要作为 2D 游戏中的精灵图时或者被 UGUI 使用时选择此选项.
Cursor 将图片用作自定义光标时选择此选项
Cookie 如果图片是作为场景中灯光 Cookie 的参数的时候选择此选项
Lightmap 将图片用作光照贴图时选择此选项
Directional Lightmap
Shadowmask
Single Channel 当图片只需要一个通道时, 设置为单通道类型

Texture Shape

图片的形状, 一共有 4 种设置.

选项 解释 用途
2D 所有纹理的最常见设置. 将图像文件定义为 2D 纹理. 用于将纹理映射到 3D 网格, GUI 以及其他元素
Cube 将图像文件定义为立方体贴图. 可以将其应用于天空盒子等.
2D Array 将图像文件定义为 2D 阵列纹理. 通常用作某些渲染的优化.
3D 将图像文件定义为 3D 纹理. 一些渲染技术使用 3D 纹理来表示体积.

sRGB (Color Texture)

启用此属性, 可以指定图片文件存储在伽马 (γ) 空间中. 相对为线性空间. 默认勾选.

Alpha Source

定义如何生成图片的 Alpha 通道.

选项 解释
None 无论图片文件是否包含 α 通道信息都不导入 α 通道
Input Texture Alpha 使用图片文件中的 Alpha 通道信息
From Gray Scale 根据图像文件的 RGB 平均值来生成 Alpha 通道信息

Alpha Is Transparency

勾选此选项之后, Unity 会覆写全透明像素的 RGB 值为临近不透明像素 RGB 的值, 通过这种方式使这些像素存储的 RGB 与临近像素一致, 减少 纹理过滤 时产生的瑕疵.

参考链接

Remove Matte (PSD)

对使用透明度 (将彩色像素与白色混合) 的 Photoshop 文件启用特殊处理. 仅当 ***.psd** 文件时有效.

Ignore PNG file gamma

启用此属性可以忽略 PNG 文件中的 Gamma 属性.

Non Power of 2

如果图片的大小不是 2 的幂, 这将定义在导入时的缩放行为, 共有 4 个选项.

选项 解释
None 不进行任何的缩放, 纹理尺寸大小保持不变
ToNearest 纹理在导入时将被缩放到最近的幂大小. 例如 257x511 纹理将成为 256x512. 注意: PVRTC 格式要求纹理是正方形, 因此最终大小将变换到 512x512
ToLarger 纹理在导入时将被缩放到下一个较大的幂大小. 例如 257x511 纹理将成为 512x512
ToSmaller 纹理在导入时将被缩放到下一个较小的幂大小. 例如 257x511 纹理将成为 256x256

[注意] 可以在 Unity 中使用 NPOT (非 2 的幂) 纹理大小. 但是, NPOT 纹理大小通常会占用更多的内存, 并且 GPU 采样的速度可能会更慢, 因此, 在可能的情况下, 最好使用两种大小的幂 (宽高都是 2 个幂) 来提高性能.

通常仅应将 NPOT 大小用于 GUI

Read/Write Enabled

只有启用此属性之后才可以在脚本中使用 Texture2D.SetPixels 以及 Texture2D.GetPixels 还有一些其他的 Texture2D 方法访问 Texture 数据.

在内部, Unity 使用 Texture 数据的副本进行脚本访问, 意味着这个选项会使 Texture 所需的内存量增加一倍. 因此, 此属性默认情况下处于禁用状态, 并且仅在需要脚本访问权限时才应启用它.

Virtual Texture Only

图片仅用作虚拟图片. 通常情况下 Unity 会将纹理既作为 Texture2D (可从脚本访问), 又作为可流式纹理, 选中此选项之后, 仅作为可流式纹理使用, 不可以从脚本访问此纹理.

Streaming Mip Maps

启用此属性以在此 Texture上 使用 Mip Map Streaming.

该设置对于 Unity 用 Mesh Renderer 显示的 3D 环境中的任何 Texture 都有效.

漫反射贴图, 法线贴图和光照贴图对 Mip Map Streaming 均有效.

  • Mip Map Priority 此数值设置 mipmap 的优先级. Unity 在分配内存资源时使用它来确定要优先处理的 mipmap. 值越大优先级越高.

Generate Mip Maps

启用此属性可启用 Mip 映射生成. Mip 贴图是 Texture 的较小版本, 勾选此属性之后, 此纹理的内存占用将会增大 33%, 但是此纹理在远近不同距离下的性能消耗也会变低, 因此需要看项目中是否需要使用内存空间来换取更好的性能表现.

Border Mip Maps

启用此属性可避免颜色渗出到较低 Mip 级别的边缘.

Mip Map Filtering

贴图过滤. 有两种方法可以使用 mipmap 过滤来优化图像质量: Box 和 Kaiser

  • Box: Mip 级别随着尺寸的减小而变得更加平滑.
  • Kaiser: 当 mipmap 的尺寸减小时, 将对它们进行锐化算法.

Mips Maps Preserve Coverage

如果希望生成的 mipmap 的 alpha 通道在 alpha 测试期间保留覆盖率, 请启用此属性.

  • Alpha Cutoff Value: 在 Alpha 测试期间控制 Mip Map 覆盖范围的参考值.

Fadeout Mip Maps

淡出贴图. 启用此属性可使 Mip 贴图随着 MIP 级别的提高而淡化为灰色. 这用于局部贴图.

  • Fade Range, 范围滑动条, 最左边的滚动条是开始淡出的第一个 MIP 级别, 最右边的滚动条定义纹理完全变灰的 MIP 级别.

Wrap Mode

变换模式. 选择在平铺的时候纹理的行为.

选项 解释
Repeat 在 Tile 时重复平铺纹理
Clamp 拉伸纹理的边缘
Mirror 在每个整数边界处镜像纹理以创建重复图案
Mirror Once 镜像一次纹理, 然后将其钳位到边缘像素
Per-axis 选择此选项可单独控制 Unity 在 U 轴和 V 轴上的 Wrap Mode

Filter Mode

过滤模式, 选择当纹理进行变换拉伸时如何对其进行过滤.

选项 解释
Point (no filter) 邻近取样, 即不进行任何过滤, 适用于像素风格
Bilinear 双线性, 纹理在附近显得模糊
Trilinear 三线性, 与双线性类似, 但纹理在不同的 MIP 级别之间也会模糊

Aniso Level

使用 Anisotropic filtering (各向异性过滤) 方式对纹理进行过滤, 当以陡峭角度查看纹理时可提高纹理质量. 适用于地板和地面纹理, 缺点是会带来较高的性能成本. 因此通常情况下会将这个等级设置为 1 或者 0.

Max Size

设置导入的纹理的最大尺寸, 单位为像素.

因为艺术家们通常更喜欢使用巨大尺寸大小的纹理, 但是在导入到 Unity 的时候可以将纹理缩小到合适的尺寸大小.

Resize Algorithm

当纹理尺寸大于指定的最大尺寸时, 用于缩小纹理尺寸的算法.

选项 解释
Mitchell 使用 Mitchell 算法调整纹理的大小
Bilinear 使用双线性插值调整纹理的大小, 如果图像中有很多很重要但是面积却很小的细节, 此时便可以使用这个选项, 这个方式可以保留比 Mitchell 更多的这些细节

Format

图片格式设置, 除了一些特殊要求, 自动即可😂.

非压缩格式

格式 常用名 内存消耗 (bytes/pixel) 描述
RGBA8888 RGBA32 4bpp RGBA 通道各占用 8 位
RGBA4444 RGBA16 4bpp 每个像素 2 字节
RGB888 RGB24 4bpp 每个像素 3 字节, RGB 通道各占用 8 位, 无透明通道
RGB565 RGB16 4bpp 每个像素 2 字节, RGB 通道各占用 5/6/5 位, 无透明通道

[] bpp [bits per pixel] 平均每个像素的位数

压缩格式

格式 压缩比 GPU 支持 图片要求 描述
DXT DXT1: 0.3
DXT5: 0.6
Windows
Android (Nvidia Tegra and Intel Bay Trail)
分为 DXT1 ~ DXT5 共五个级别
DXT1 适用于无透明通道或者仅有 1 位 Alpha 的贴图
DXT3 和 DXT5 支持包含 4 位 Alpha 通道的 RGB 纹理
ATC RGB: 0.125
RGBA: 0.25
Qualcomm - Adreno 高通 GPU 支持的压缩格式, 支持带有 Alpha 通道的 RGB 纹理压缩
PVRTC RGBA
PVRTC RGB
2 bit: 0.125
4 bit: 0.25
iOS
Android: PowerVR
尺寸必须为 2 的幂
长宽必须相同
iOS 平台都支持的一种压缩格式, 支持每个像素 2 位或者 4 位的纹理, 包含或者不包含 Alpha 通道都可以
PVRTC 2-bpp 会把一个 8 X 4 的像素单元组压缩成一个 64 位的数据块, 压缩效果比较差
PVRTC 4-bpp 会把一个 4 X 4 的像素单元组压缩成一个 64 位的数据块, 游戏中更多的会使用 4 位压缩
ETC1 4 bit RGB: 0.125
RGBA: 不支持
OpenGL ES2.0 GPU 尺寸必须为 2 的幂
长宽可以不同
支持 OPenGL ES2.0 的 GPU 可以使用此格式, 即移动 GPU 均支持的格式, 但是不支持 Alpha 通道
ETC1 会把一个 4 X 4 的像素单元组压缩成一个 64 位的数据块
ETC2 4 bit RGB:0.125
RGBA: 0.25
OpenGL ES3.0 GPU 尺寸为 4 的倍数 支持 OPenGL ES3.0 的 GPU 可以使用此格式, 解决了 ETC1 不支持 Alpha 通道的问题, 支持更高质量的压缩

Compression

纹理的压缩类型. 根据平台和压缩格式的可用性, 不同的设置可能最终会具有相同的内部格式.

例如, 低质量压缩会影响移动平台, 但不会影响台式机平台.

选项 解释
None 不压缩纹理
Low Quality 以低质量格式压缩纹理
Normal Quality 以标准格式压缩纹理
High Quality 以高质量格式压缩纹理

Use Crunch Compression

是否使用紧缩压缩来压缩纹理. 如果可用, 推荐使用此压缩.

Crunch 压缩方式是 DXT 或 ETC Texture 压缩之上的有损压缩格式, 展示图像时, Unity 在 CPU 上将纹理 "解压缩" 为 DXT 或 ETC, 然后在运行时将其加载到 GPU.

Crunch 压缩有助于 Texture 使用最小的磁盘空间和下载带宽.

Crunch 算法可能需要花费很长时间对纹理进行压缩, 但是运行时的解压缩速度非常快!

  • Compressor Quality: 设置 Crunch Compression 的质量, 更高的压缩质量意味着更大的纹理和更长的压缩时间.

Split Alpha Channel

在以下平台上可以对 Texture 进行 Alpha 分割: tvOS, iOS, Lumin, Android.

Override ETC2 fallback

允许选择在不支持 ETC2 纹理格式的 Android 设备上将纹理解压缩到的纹理格式.

附录

  • LOD: Levels of Detail, 简称 LOD, 译为: 细节层次技术. 该技术通常对每一原始多面体模型建立几个不同逼近精度的几何模型, 与原模型相比, 每个模型都只保留了一定层次的细节, 在绘制模型时, 根据不同的标准选择适当的层次模型来表示物体. 远视的时候使用粗糙的模型, 近视的时候使用精细的模型.

  • HUD: 游戏开发中一般用来指代仅用来向玩家显示游戏中各种信息的 UI. 原意是: 平视显示器.

  • Mip Map: Mip 贴图, 是一个包含了一个图像逐渐变小的多个版本的列表 (类似 LOD). 当纹理使用 Mip 贴图时, Unity 会在距离相机很远的地方自动使用较小版本的纹理, 这样便可以降低渲染纹理的性能成本并且又不会造成细节损失; 另外 Mip 贴图还可以减少纹理混叠和闪烁. 但是启用 mipmaps 会额外占用 33% 的内存, 因此仅应在会根据摄像机距离而改变的纹理上使用它, 禁止在不会改变的纹理上使用它, 例如 UI 纹理, 天空盒等都禁止使用.

  • Normal maps: 法线贴图. "法线贴图着色器" 使用 "法线贴图" 使低多边形模型看起来像包含更多的模型细节一样, 使模型的外观更加精细; 另外 Unity 中使用的是编码为 RGB 图像的法线贴图.

  • Alpha maps: 阿尔法贴图, 就是指仅包含 Alpha 信息的 Texture. 可以使用 Alpha 贴图对材质应用不同级别的透明度.