Unity 之 纹理类型导入设置和压缩格式介绍

Posted 陈言必行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 之 纹理类型导入设置和压缩格式介绍相关的知识,希望对你有一定的参考价值。

一,纹理相关

1.1 导入设置

纹理会占用大部分内存,因此,导入设置非常重要。通常,请遵循以下规则 :

  • 减小 Max Size :使用能生成视觉上可接受的结果的最低设置。这种非破坏性方式,可以快速降低纹理内存。
    使用 2 的幂 (POT) :Unity 要求移动端纹理压缩格式(PVRCT 或 ETC)采用 POT 纹理尺寸。

  • 制作纹理图集 :将多个纹理放置到单个纹理中,可以减少绘制调用和加快渲染速度。使用 Unity 精灵图集 或第三方 Texture Packer 可以制作纹理图集。

  • 关闭 Read/Write Enabled 选项 :如果启用,此选项在 CPU 和 GPU 可寻址内存中都会创建副本,纹理会占用双倍内存。大多数情况下,应保持此选项为禁用状态。如果要在运行时生成纹理,请通过 Texture2D.Apply 强制执行,并且传入设置为 true 的 makeNoLongerReadable。

  • 禁用不必要的 Mip Map :对于在屏幕上大小保持不变的纹理(如 2D 精灵和 UI 图形),Mip Map 不是必需的,对于与摄像机的距离会变化的 3D 模型,请保留 Mip Map为启用状态。

1.2 支持格式

Unity 支持读取文件格式:

  • BMP,EXR,GIF,HDR,IFF,JPG,PICT,PNG,PSD,TGA,TIFF

  • Unity 可导入多层PSD文件,导入时自动展平,但图层在资源本身中维护。


二,纹理类型

2.1 纹理类型说明

  • Default Default: 是用于所有纹理的最常用设置。此选项可用于访问大多数导入纹理的属性。
  • Normal Map Normal map: 是可将颜色通道转换为适合实时法线贴图的格式。
  • Editor GUI and Legacy: 当我们要在 HUD 或 GUI 控件上使用纹理,选择此项。
  • Sprite (2D and UI): 当我们要在2D游戏中或者作为UI使用时,选择此项使用此纹理作为精灵。
  • Cursor Cursor: 是用于将纹理用作自定义游标的格式。
  • Cookie: 当我们需要场景光源的剪影时,选择此项。
  • Lightmap Lightmap: 是要将纹理用作光照贴图的格式。
  • Single Channel: 当我们需要纹理单通道时,选择此项。

2.2 纹理尺寸大小

理想情况下,纹理尺寸大小应该是每边为2的整数次幂(如:2,4,8,16像素(px)等等)。

Unity 允许使用NOPT(非2的幂)纹理大小;但是,NPOT纹理大小通常需要多一点内存,并且GPU的采样速度可能更慢。因此,我们尽量让美术出的图使用2的幂大小,以便于提高性能节省内存。

如果平台或GPU不支持NPOT纹理带下,Unity会对纹理进行缩放和填充已达到下一个2的幂的大小。

纹理导入后可将Advanced选项选择Not Power of 2,在导入时放大NPOT纹理资源。


三,所有支持的纹理压缩格式

下表显示了每个平台上可用的纹理压缩格式选项以及生成的压缩文件大小(基于 256 像素平方图像)。选择纹理压缩格式需要在文件大小和质量之间取得平衡;质量越高,文件越大。在下面的描述中,假定游戏纹理的最终文件大小为 256 x 256 像素。

纹理压缩格式描述大小(256x256 像素纹理)
RGB Compressed DXT1压缩无符号标准化整数 RGB 纹理。32KB(4 位/像素)
RGB Crunched DXT1与 RGB Compressed DXT1 类似,但使用 Crunch 压缩方式进行压缩。有关 Crunch 压缩的更多信息,请参阅上面的注意事项。可变,取决于纹理中内容的复杂程度。
RGBA Compressed DXT5压缩无符号标准化整数 RGBA 纹理。8 位/像素。 64KB(8 位/像素)
RGBA Crunched DXT5与 RGBA Compressed DXT5 类似,但使用 Crunch 压缩方式进行压缩。有关 Crunch 压缩的更多信息,请参阅上面的注意事项。可变,取决于纹理中内容的复杂程度。
RGB Compressed BC6H压缩无符号浮点/高动态范围 (HDR) RGB 纹理。64KB(8 位/像素)
RGB(A) Compressed BC7高质量压缩无符号标准化整数 RGB 或 RGBA 纹理。64KB(8 位/像素)
RGB Compressed PVRTC 2 位高压缩 RGB 纹理。质量低,但较小,因此提高了性能。16KB(2 位/像素)
RGBA Compressed PVRTC 2 位高压缩 RGBA 纹理。质量低,但较小,因此提高了性能。16KB(2 位/像素)
RGB Compressed PVRTC 4 位压缩 RGB 纹理。高质量纹理,尤其是颜色数据,但可能需要很长时间压缩。32KB(4 位/像素)
RGBA Compressed PVRTC 4 位压缩 RGB 纹理。高质量纹理,尤其是颜色数据,但可能需要很长时间压缩。32KB(4 位/像素)
RGB 16 位65,000 种颜色,没有 Alpha。使用比压缩格式更多的内存,但可能更适合没有渐变的 UI 或清晰纹理。128KB(16 位/像素)
RGB 24 位真实色彩,但没有 Alpha。192KB(24 位/像素)
RGBA 16 位低质量真实色彩。这是具有 Alpha 通道的纹理的默认压缩格式。128KB(16 位/像素)
RGBA 32 位真实色彩,并有 Alpha。这是具有 Alpha 通道的纹理的最高质量压缩格式。256KB(32 位/像素)

以上是关于Unity 之 纹理类型导入设置和压缩格式介绍的主要内容,如果未能解决你的问题,请参考以下文章

Unity 之 音频类型和编码格式介绍

Unity 之 音频类型和编码格式介绍

【unity官方】Unity项目常见问题

干货:Unity游戏开发图片纹理压缩方案

(转)Unity 图片压缩技巧

尽管一切都是高分辨率和未压缩的,但 Unity 纹理仍然模糊