PC平台使用setMaterial 疯狂报错

  • Creator 版本: 2.4.5

  • 目标平台: PC,win10系统

  • 重现方式:使用setMaterial 接口就会出现

  • 首个报错:
    2021-07-10T04:05:52.426Z - normal: Simulator: W/renderer (225): Failed to set technique property texture, value not found
    2021-07-10T04:05:52.426Z - normal: Simulator: W/renderer (225): Failed to set technique property texture, value not found
    2021-07-10T04:05:52.426Z - normal: Simulator: W/renderer (225): Failed to set technique property texture, value not found
    2021-07-10T04:05:52.426Z - normal: Simulator: W/renderer (225): Failed to set technique property texture, value not found

想将精灵变灰,由于之前的方式被废弃,推荐使用这种方式,但它在PC一直疯狂的报这个错误,不停的刷屏,毫无效果

官方能看一下吗?

你可以试试我这种方式
static graySprite(gray: boolean, sp: cc.Sprite) {

    let material = null;

    if (gray) material = cc.Material.getBuiltinMaterial('2d-gray-sprite');

    else material = cc.Material.getBuiltinMaterial('2d-sprite');

    material = cc.MaterialVariant.create(material, sp);

    sp.setMaterial(0, material);

}

好的,谢谢大佬指点

谢谢大佬,我试了下不行 :rofl:,我的实现方式在浏览器上是没问题的,就是在PC包上运行就会不停的报错。

官方大佬,能抽时间看看这个问题吗?

官方还维护2.4的版本吗?

你倒是把你写的贴出来看看啊 :joy:

这个只要在PC下面直接跑一下就能100%重现的,所以就没写 :rofl:


this.materials = Array.from(this.icon.getMaterials());
this.icon.setMaterial(0, this.materials[this.skillModel.isCanUse ? NORMAL : GRAY]);
实现就是上面这样的了,在模拟器就会疯狂报错。请大佬们看看,谢谢

请各路大佬们,帮忙看看指点一二。谢谢

@property(cc.material)
grayMat: cc.material = null;

setMaterial() {
   this.sprite.setMaterial(0, this.grayMat);
}

另外sprite组件的Materials改为1

大佬你的意思时那个sprite组件中的Materials只能保留一个是么,谢谢大佬吗,我试试看

感谢大佬,按照你的方案解决了。

目前应该暂时只支持单个材质

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