通过图集加载出的图片残留其他Sprite的解决方案

通过图集加载出的图片残留其他Sprite的解决方案

游戏开发中有些UI界面的图片是动态加载的, 相信大部分开发者都遇到过下面这种情况

请添加图片描述

我自己画的(灵魂画手, 大家不要在意, 哈哈哈), 实际加载出来的Sprite却是下面这种情况.

请添加图片描述

就是通过图集加载出来的图片残留有其他的图片在上面. 我们通过观察对应的图集如下

请添加图片描述

很明显, 通过图集取出来的Sprite图片把它附近的其他Sprite也加载出来了一部分. 以前针对NGUI的时候, 我们是通过设置图集里面的图片的间隔, 将间隔增大来实现Sprite加载出来的图片正常. 其实问题就在于对于凹凸的图片,图集会对它进行Tight的方式进行紧密排列,但是图集取图片的时候, 没有保留更多的细节信息, 只是按照矩形方式取出来,所以才会导致这种问题.

那么我们是否可以针对这种情况将其移植到UGUI里面呢? 答案是可以的. 我们只需要将图集的Padding将2改为4或者8即可.
请添加图片描述

我们以前是按照这种方式做的,也没出过问题,但是问题在于,通过设置padding,人为的将整个图集撑大了,而实际上其实就是这种单个的图片(凹凸形状的,或者图片带有阴影之类的)才会有这种问题.我们单纯的将所有的图集padding都改的很大,其实是很浪费的.所以我们采取下面的这种方式.

请添加图片描述

对于这种单个的会残留其他图片的Sprite, 我们将它的MeshType从Tight改为FullRect即可. 即针对单个图片我们不使用紧凑排版,而是保留它的全部,包括透明的部分,也就是说这张图是多大尺寸,在图集里面就是多大尺寸,保留其全部细节,这样打出来的图集就不会出现上面的加载出来带有残影的问题.虽然对于这个图片来说是挺浪费空间的,但是对于整个图集来说,能够避免所有的图片间隔都增大,还是能够接受的.

能够避免所有的图片间隔都增大,还是能够接受的.

其实更好的方式是,让美术尽量少出这种类似凹凸的图片或者带大面积阴影效果的图片,但是有时候为了效果,我们只好做出一定的取舍,通过设置FullRect亦能满足需求.

猜你喜欢

转载自blog.csdn.net/onelei1994/article/details/121707774