网站开发 验收,wordpress社区,怎么为自己做的网站申请域名,工业设计公司怎么收费引言 哈喽大家好#xff0c;我是亿元程序员。 不知道小伙伴们还记不记得笔者上次通过Mask实现拼图游戏的圆角效果。 那期文章一发出去就收到了很多小伙伴们的评论#xff0c;其中呼声比较高的#xff1a; 当然也有很多小伙伴说现在手机性能都相对来说比较高了#xff0c…引言哈喽大家好我是亿元程序员。不知道小伙伴们还记不记得笔者上次通过Mask实现拼图游戏的圆角效果。那期文章一发出去就收到了很多小伙伴们的评论其中呼声比较高的当然也有很多小伙伴说现在手机性能都相对来说比较高了没必要纠结手表能不能玩笔者觉得还是可以优化一下的不然写文章都没有素材了建议大家不要学。言归正传本期带大家一起来看看在Cocos游戏开发中如何通过Shader实现能够合批的拼图游戏将DC从400多降到个位数。本文源工程可在文末获取小伙伴们自行前往。回顾一下上期笔者讲解了如何通过Mask实现圆角拼图有很多小伙伴提出了不能合批的问题先简单科普一下合批就是将多个需要绘制的图形元素合并在一起然后一次性提交给GPU进行渲染。这样做可以显著减少CPU调用图形API绘制命令的次数也就是降低DrawCall。笔者把上一次的拼图改成10*10也就是100张拼图时DC高达404差点就找不到了**怎么来的**我们简单分析一下其中:Mask2个。Sprite1个。Graphics:1个。所以总数高达4*100也就是400个DC。那我们要怎么才能合批把DC降下来不用Mask既然Mask和Graphics占大头我们只能换个方式了。上期我们讲到实现圆角效果除了Mask以外还可以通过Shader或者自定义Mesh来完成本期我们通过Shader来完成。如上图通过Shader实现圆角效果的原理也比较简单把拼图块分成以下4个部分:1.图片部分保留原图片纹理。2.白框部分设置白色。3.黑框部分设置黑色。4.框外部分设置透明。我们只需要通过距离判断当前像素处于以上4个部分的哪一个部分即可完成Shader的编写。下面我们一起来进行圆角Shader实战。圆角Shader实战下面开始实战本次实战不代表最优解欢迎小伙伴们评论区一起探讨这部分比较枯燥小伙伴们可以直接拉进度条。1.创建Shader我们依旧在资源管理器中搜素sprite找到builtin-sprite这个Shader然后CtrlC/V到我们的assets目录下。2.添加properties想要计算像素处于哪一部分我们需要通过一些列的参数来计算判断。3.定义uniform在片段着色器中接收参数(是否圆角、是否有边框、uv范围、纹理大小、圆角半径、黑框宽、白框宽、黑框内嵌等等)。4.计算各层的边界位置在片段着色器中计算各层的边界位置黑框外层边界最外层黑框内层边界白框外边界图片层边界白框内边界5.计算各层的中心点和半尺寸计算各层的中心点和半尺寸同时计算各层的圆角半径。6.计算当前像素到各层边界的距离通过SDF方法计算出像素到各层边界的距离。得出像素处于哪一层7.根据距离判断像素属于哪一层并设置颜色最后根据距离判断像素属于哪一层并设置颜色即可完成对应的效果。8.应用创建材质并且应用到sprite。最后我们通过Pass直接设置uniform完成参数的传递。9.效果演示一顿操作猛如虎通过上述的操作我们成功去掉了Mask和Graphics画线DC也成功降了下来虽然DC已经是之前的四分之一但是拼图碎片之间为什么没有合批材质不同根据合批的要求需要相同的材质和纹理从上面来看虽然我们用的是同一张纹理但是材质是单个碎片单独new出来的因此首要的第一步我们需要把材质改成同一个。1.共享材质声明一个静态的唯一的材质sharedMaterial。2.提取公共常量公共的所有碎片都一致的变量还是按照原方式传递不会打断合批。3.特殊部分对于每个碎片的边和圆角标志因为它们都不相同如果使用同一个材质通过原方式传递会导致所有的碎片的边框一样。这里我们借助sprite.color去传递这部分参数不会打断合批。4.color通道中解码数据解码标志位拿到我们传递的参数。5.效果演示拿到参数后圆角和边框算法和原来保持一致运行后即可看到我们的效果DC成功降到了个位数。完整效果结语以上就是通过Shader实现能够合批的拼图游戏的实战不知道我说明白没有。一个拼图游戏都出了这么多期了还有什么素材可以继续本文实战完整源码已加更到亿元Cocos小游戏实战合集(8/10)不占份数已经拥有的小伙伴可以直接更新。我是亿元程序员一位有着8年游戏行业经验的主程。在游戏开发中希望能给到您帮助, 也希望通过您能帮助到大家。AD:笔者线上的小游戏《打螺丝闯关》《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》《方块掌机经典》大家可以自行点击搜索体验。实不相瞒想要个赞和爱心请把该文章分享给你觉得有需要的其他小伙伴。谢谢推荐文章亿元Cocos小游戏实战合集俄罗斯方块谁不会做…啊流沙版最近很火的一个拼图游戏老板让我用Cocos3.8做一个…老板说拼图游戏太卷了让我用Cocos做个3d版本的…敢不敢挑战用Cocos3.8复刻曾经很火的割绳子游戏Cocos游戏如何接入安卓穿山甲广告变现你知道和不知道的微信小游戏常用API整理赶紧收藏用起来~Cocos游戏如何快速接入抖音小游戏广告变现