3.8.5 遮罩Shader在编辑器内和浏览器效果不一致,浏览器中不生效

  • Creator 版本:3.8.5

  • 目标平台: windows chrome(138.0.7204)浏览器预览、Android chrome浏览器(web-mobile)

  • 重现方式:解压asset目录后,直接打开目录下的default场景,Canvas/SpriteSplash元素在编辑器中是中间挖空往旁边渐变,但在浏览器中shader不生效,编译成web-mobile也不生效

  • 编辑器操作系统: windows 11

  • 重现概率: 100%

场景资源:mask-shader.zip (6.0 KB)
编辑器内显示效果:image
windows浏览器及编译为web-mobile后的效果:image

你在编译器里执行也不对啊:
image

非执行的预览效果仅仅是静态预览参考,不会执行你的脚本传入参数,因此不会是正确执行着色器后的效果。

你着色器里默认的参数值是:

        length: {value: 1.9}
        width: {value: 0.25}
        height: {value: 0.25}

编辑器预览用的就是这些参数值。

执行的时候脚本传入的动态参数,上面三个参数我打印看了下变成了:2.1、 0.5、 0.5,全变了执行效果肯定不一样了。

将着色器中定义的默认值改到和执行脚本传入的动态参数一样,在静态预览和实际运行也是不一样的

现在疑惑的是:即使执行脚本时传入的参数和默认参数不同,实际运行时应该也有小部分范围出现中心往边缘透明渐变的情况,没出现的话应该怎样调试

不要应用到内置的 default_sprite_splash SpriteFrame 节点,它默认勾选的 Packable 会被动态合批导致 UV 计算不对,你自己弄张图(最好不要勾选 packable)就正常了:

编辑器在预览时是不会动态合批的所以看不出问题。

具体见这个文章的 4.3 小节:https://juejin.cn/post/7514260735943081984#heading-15

图片的packable属性勾选去掉试下呢?

6666,什么原因呢?
打包就不可这样了吗?
不package,是不会打包到游戏中吗