button 组件 enable auto gray effect 功能失效的bug

  • Creator 版本:2.2.1

  • 目标平台: Web

  • 重现方式:在creator中勾选 enable auto gray effect
    在creator中确认 materials 都正确选中
    在creator的button面板中操作interactable属性 按钮正确变灰
    在脚本中设置interactable 按钮无法在变灰和正常状态之间切换

  • 编辑器操作系统 MacOS

目前有效的临时解决方案:

this.btn.node.getComponent(cc.Button).interactable = true
this.btn.node.getComponent(cc.Sprite)._materials = [this.btn.node.getComponent(cc.Button).normalMaterial]

正常状态:normalMaterial
灰色状态:grayMaterial

在2.2.1和2.2.2中测试了下,并没有发现你所反馈的问题。使用enable auto gray effect功能,设置材质球后,在代码中改变interactable是可以正常变灰以及恢复的,这是我的测试demo,可以参考一下NewProject_11.zip (917.7 KB)

另外参考文档:


是否是由于使用了Transition SPRITE模式且设置了disableSprite属性?在这种情况下,Enable Auto Gray Effect是不生效的

transition 为scale模式,没有涉及到这一块,测试demo表现正常,对照demo检查过应该没有其他可能关联的选项导致,目前不清楚到底是如何导致的,
在button状态被脚本切换后,行为模式确实已经改变(可交互状态)
当脚本将按钮从false状态切换为true时,sprite依然是灰色,但触摸交互后变更为正常状态,推测问题在渲染部分

此Bug复现:
复现方式:
使用代码示例界面预设,在场景加载界面初始化时调用cc.Button.interactable 。点击效果没有问题,但是材质并没有切换。之后切换时均正常。