前言
在Unity中Texture可以服务于2D&3D网格,而Sprite则侧重服务于2D平面网格,我们可以设置一个Texture为Sprite,用于表示2D游戏元素、UI。通常Sprite会和Atlas(图集)一起使用,从而降低CPU和GPU交互频率,提高GUP渲染的效率。
在Unity的新版本中Sprite Pack已经被废除, 参考Unity6
设置一个Sprite
将Texture Type选项切换为Sprite (2D and UI),就可以激活Texture的Sprite模式
@选项
Sprite Mode:Sprite 应用模式
Single:代表一个独立的图形元素纹理。
Multiple:该模式意味着您正在处理一个包含多个独立图形元素的纹理。这种模式通常用于将一个大的图像文件分割成多个小的Sprite,这些小的Sprite可以作为游戏中的不同图形元素使用。
Polygon:该模式允许开发者根据Sprite Editor中定义的自定义轮廓网格来剪辑精灵纹理。这种模式适用于当精灵纹理的形状不是标准的矩形,而是需要根据特定的多边形轮廓来定义时。
Pixels Per Unit:PPU这个参数决定了每个单位(unit)显示的像素数量。默认情况下,PPU的值设为100,这意味着每1个单位显示100个像素。这个设置对于管理游戏中2D图像的大小和分辨率非常有用,尤其是在处理不同分辨率的设备或调整视觉效果时。
Mesh Type:
Full Rect:这个选项会生成一个矩形网格来渲染Sprite,即使Sprite本身的形状不是矩形。这种方式的优点是生成的网格数较少,适用于渲染大量小的、形状规则的Sprite。然而,它的缺点是可能会渲染不必要的透明区域,导致性能浪费。
Tight:当选择Tight模式时,Unity会根据Sprite的alpha通道来生成网格,这样生成的网格通常更加贴合Sprite的实际形状。这种方式可以减少渲染不必要的透明区域,从而提高性能,尤其是在Sprite较大或者透明区域较多时更为有效。
Tight是默认选项,通俗的说Tight的渲染范围在纹理左上角的第一个最靠边的可见像素,到右下角的最后一个最靠边的可见像素,相当于使用AABB包围盒规则剔除了多余的透明像素。
Extrude Edges:该属性控制在生成的网格中为精灵(Sprite)周围留出多少区域大小。这个设置决定了精灵的边缘向外扩展的距离,这在创建具有一定厚度的2D模型时非常有用,例如制作墙壁或其他实体。
通俗点讲,Extrude Edges选项会以像素为单位,向四周扩展Sprite的使用的网格。
Pivot:影响图元在平移、旋转、缩放时依赖的圆点,默认为图元的中心点
创建Atlas
在Assets详情视口单击右键>Create>2D>Sprite Altas来创建一个新的图集,图集可以是任何名称。
在Atlas中一共有Master和Variant两种模式。
Include In Build:Sprite Altas是否参与打包构建。
如果Include In Build为true, 图集会构建到发布版本中,好处是Unity全程自动加载,坏处是有BUG。Include In Build为false,时只能将图集作为负载资源使用,好处是包体小了,坏处是你得写专门的加载脚本,桥接Sprite的载入。
Allow Rotation:是否允许打包器对纹理进行旋转。
Tight Packing:Tight Packing选项允许您启用精确包装技术。当启用此选项时,打包器会更精确地计算Sprite的边界,而不是仅仅依据Sprite外部矩形的轮廓来进行打包。这样做可以提高图集中Sprite的密度,减少不必要的空间浪费,使得纹理利用率更高。
Alpha Dilation:透明度扩散为了结局精灵纹理在放大后可能会造成的边缘锯齿状问题。
Padding:指定精灵图集中各个精灵纹理之间的像素数。这个设置作为一个缓冲区,用于防止由于图像边缘对齐不当导致的渲染问题,例如像素重叠或缺失。
Variant 类型的作用是利用主Sprite Atlas(Master Atlas)并生成针对不同平台或解析度的纹理变体。通过预配置的平台特定Sprite Atlas,可以考虑最终运行的平台和设备的特性,如分辨率和内存限制。
Atlas Packing
- Ojbects for packing 是我们需要打包的图集,它可以是一个文件夹,也可以是一个Sprite。
- 在应用时,只需要将对应的对象拖入 Objects for Packing 的名称上,然后保存工程就可以了。
- 期间我们我可通过Pack Preview按钮来预览生成的图集。
Warining:在Packing时,Sprite的压缩格式永远遵循Sprite Atlas资源的压缩格式
FQA
已经勾选了Include In Build但是到真机上纹理仍然是乱码!
答:这是Unity的BUG,延续至今一直到Unity 6中,原因是因为在取消勾选 Include In Build时,没有触发Unity 刷新资源的行为。我用的解决办法是新建一个图集,重新搞一下,就不会再Include In Build模式下乱码了。