书接上回,上一篇文章介绍了使用UGUI下的Image组件处理时,使用SpriteAtlas降低Drawcall的招数;然后这种做法依然存在一些问题,比如物体的排序依赖于UI组件之间在Hierarchy中的层级顺序,这样显然不太利于我们组织起比较复杂的2D物体,故这里我们采用SpriteRenderer和SortingGroup制作地图上的复数物体:
这里根物体的OrderInLayer 值为0,其上的Square 值为1,显示在根物体前,Bg_icon的值为-1,可以显示在根物体后(即使它在Hierarchy中的层级在根物体下面):
最后我们给根物体添加SortingGroup并且使它们处于同一个层级:
同样的,我们要将使用到的Sprite放入同一个SpriteAtlas中以降低Drawcall,看看效果,除开背景消耗了一次Drawcall以外,我们的复数个物体只用了一次DrawCall,并且渲染顺序正确:
最后,SortingGroup如果忘记添加的话,可能会出现一些比较诡异的渲染顺序,下面是关掉SortingGroup时可能会出现的现象,能看到同一个Body下面的组件会出现穿插的现象:
参考知识内容:2D 排序 - Unity 手册