Unity2017新功能之Sprite Atlas与Sprite Mask详解
发表于2018-09-20
Unity2017新版本的出现就是为了帮助大家去提升工作效率,下面就给大家介绍其中两个精灵相关的重要功能:Sprite Atlas(精灵图集)与Sprite Mask(精灵遮罩)。
Sprite Atlas(精灵图集)用于替换现有的Sprite Packer,让制作图集(Atlas)的过程更加便利和高效。Sprite Mask (精灵遮罩)用于显示一个或一组Sprite的部分区域,该功能非常实用,比如游戏中常见的圆角卡片或圆形头像等,都可以用Sprite Mask实现。本文将通过实际案例来详细展示以上两个重要功能。
一、Sprite Atlas(精灵图集)
Sprite Atlas针对现有的图集打包系统Sprite Packer在性能和易用性上的不足,进行了全面改善。除此之外,相比Sprite Packer,Sprite Atlas将对精灵更多的控制权交还给用户。由用户来掌控图集的打包过程以及加载时机,更加利于对系统性能的控制。
Sprite Atlas的主要有以下三个功能:
1.创建、编辑图集以及设定图集参数
2.添加图集Variant(变种)
3.运行时访问图集
关于Sprite Atlas(精灵图集)三个功能的具体介绍可以参考Unity2017新功能之Sprite Atlas详解
二、Sprite Mask(精灵遮罩)
Sprite Mask组件用来隐藏一个或一组精灵的部分区域,只作用于使用了Sprite Renderer的对象。该功能非常实用,因为在实际项目中,很多情况下都需要将图片显示在圆角矩形或圆形框中。如下图所示,图中实际上有卡片背景、卡片角色、以及卡片框三张图片,最终希望的效果是将超出边框的部分都裁剪掉。最直接的做法就是将卡片背景及卡片角色的图片进行裁剪。但这样做的问题是,如果其它地方使用了大小不一样的图片框,甚至改为圆形框,就需要再出一套裁剪好的角色和背景图片,这样会造成资源浪费。
如果使用新的Sprite Mask组件,就可以通过一张圆角矩形对超框部分进行裁剪,如下图所示:
当然,被裁切的图片需要在Sprite Renderer组件中设置Mask Interaction字段,如下图所示。如果要显示Mask中的区域,就设置为Visible Inside Mask;反之则设为Visible outside Mask。
最终设置好后的效果如下图所示:
默认情况下,Sprite Mask会影响场景中其“Mask Interaction”设为Visible的精灵 。但我们经常希望只影响一个或一组特定的精灵。这时就需要用到Sorting Group组件。Sprite Mask会仅剪裁Sorting Group下的子节点,如下图所示:
还有另外一种方法可以限定Sprite Mask的处理范围,就是设置一个Sorting Layer的范围。如下图所示,CircleMask处理的Sorting Layer的范围是3 ~4,它只会裁剪该范围内的角色图片。
总结
通过以上介绍可以看出,Sprite Atlas相较于原来的Sprite Packer在精灵可控性上有了很大改善,这些改善可以帮助用户更好地控制图集大小,且更加方便地使用图集。而Sprite Mask通过Mask控制精灵部分显示,可以帮助用户非常方便地实现大量常见的表现效果。
来自:https://blog.csdn.net/qq_34444468/article/details/79149063