老问题了,图片黑边OR白边,预乘

2.x版本FAQ里面有这么一说


3.x版本这两个属性已经标记废弃,编辑器也移除了这两个属性的设置。当然代码里面强制设置这两个属性叶可以,但是同2.x一样,不能变化透明度,会有问题

难道除了对原图片进行扩边外,没有其他解决办法了
我想问问你们处理这个问题,是通过哪种方式?

以下是论坛热心大佬分享的工具


1赞

目前3.x可以直接使用自带的autoAtlas,直接在构建之后进行扩边,不用一个个去扩

动态加载的图片,不放在项目里的。 这种咋办呢。

我想了解一下用3.x做项目的人,是怎么选择的。 是做扩边呢还是强制代码做预乘(不能改变透明度)。大项目,动态散图资源非常多(5万个),不放在assets里面的

可以试试替换sprite默认的effect,如果遇到纹理采样出来的alpha < 1,说明边缘出现混合了,此时根据alpha值重新提升rgb值。

不过这种做法有个前提是,图片本身没有半透明区域,以及图片轮廓外都是rgba(0, 0, 0, 0)。

目前我自己用的还是离线做扩边,因为项目里没有从网络来的图片。

这个方案对于我来说,太过于复杂了。 :laughing:

目前这么多资源的动态加载,应该是用AssetBundle的方式进行分包加载吧

用loadRemote,不用bundle,给编辑器减少点压力 :joy:

那就只能自定义的一个shader来进行预乘,设置对应的混合,现在3.x的混合选项在material那里

1赞

我们计划在 3.5.1 集成去黑边的外扩处理。不过这样可能就不支持用户自定义的一些强力 png 压缩流程就是了。目前建议用离线做扩边或者预乘。

这个是在构建阶段还是在运行阶段? 如果是在构建阶段的话,那对我这种把资源放在外部的没有用。 :sweat_smile:

结论。
图片做扩边。

官方说了3. x 版本几万个资源都是非常流畅的 难道是假的?

3.5.1 能否把扩边方法暴露到自定义构建流程中

这边尝试找了一个等价2.x设置blend的方法,在编辑器中看效果是对的,不知道有没有兼容性问题,发出来看下。

  • 原始图,有黑边

image

  • 拷贝默认的sprite材质,改配置

image

  • 把材质放到cc.Sprite的CustomMaterial中,看到效果,黑边消失了

image

为什么要勾 isA2C,原理不太清楚,如果没勾的话,有奇怪的异常
限制性挺大的,对全半透明的图,效果完全错误,不通用 :joy: :joy: :joy:

2赞

谢谢告知。 我这边最后是用工具对图片进行扩边操作。

资源导入阶段。对把资源放在外部的没用,放在外部的资源肯定得自己处理了

官方这部分的信息文档还是不全啊,我也很想知道这个isA2C究竟是啥意思 :joy:

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。