最开始是使用的creator的Mask组件,但是锯齿化太严重,不能使用。
后面改为使用shader,把遮罩的图片传入shader中,像素相乘输出,效果是可以实现的。但是局限性比较大,遮罩和原图必须具有相同的UV坐标,这样的话,遮罩和原图都不能打包图集了。但是遮罩和原图数量很多,如果不打包图集网络加载速度无法忍受。后面有种替代做法,就是遮罩和原图打包,在使用前使用RenderTexture渲染成张单图,这样前面的shader就又可以用了。
但是发现这样做法兼容性有一定问题,百度小游戏和QQ小游戏的iphone端会有不显示的情况,没有报错,也不知道什么问题,怎么调试。
现在想问问论坛里面有没有做过自定义渲染的大佬,怎么把遮罩的spriteframe通过顶点数据传过去,这样UV就可以分开了,问题也就解决了。
看了下论坛里面自定义渲染的帖子,【分享】自定义渲染合批之自定义顶点格式(附 Demo 和引擎源码解读) 我这边也一直没有成功,也不知道这样兼容性怎么样。
或者还有没有其他好的办法啊?,大佬们,谢谢了
请问找到更好的办法了吗?我现在也遇到同样的问题。在3.x里。
使用shader, 遮罩图片和原图一样大小, 并且都取消 packable 属性, 这样直接用原图UV就能对得上了, 其他方式需要修改定点格式, 比较麻烦
1赞
嗯嗯。谢谢大佬回复!