在脚本中调用node.getComponent(cc.Button).interactable = false;
脚本不能点击,但是没有变灰,
但是在start()中调用的话,按钮就会变灰·········
有什么办法,可以让变灰生效么???
脚本中的什么时候调用的?
其他脚本调用 包含button的脚本
比如包含btn的脚本有个函数叫 init
在init里边,调用interactable = false;
这时候 按钮不能点击,但是不会变灰·····
如果把interactable = false;放到start里,就会变灰
你先把节点的父节点加上,再对按钮操作。比如:
node.parent = this.node;
btn.interactable =false;
节点在层级管理器中,不是动态添加的。
有没有active = false 嘛?先让它显示出来
我看了下,active一直是true······
我就是这么改的啊,这个版本有这个问题,要对脚本内的节点操作,要先让它显示到界面上,它的上层节点 active = false的话,也是需要先 active = true,这个按钮的变灰才会生效
我懂你的意思,但,node在层级管理器中,先调用的那些函数,然后才执行的start~
解决办法是有很多~
我只是 觉得,目前这种,也应该是让他生效吧
我也用了spine的变灰,自己控制的Material,就可以正常变灰·····
难道我去设置变灰,还得要注意,生命周期么······
@Knox 您能明白我的意思么
init 应该也有一个时机吧,是在其它组件的 start/onload 中还是点击触发?
有可能是个 bug,你能不能给一下简单能重现的 demo ?或者是在详细描述一下
在 onEnable 中
流程描述一下
- 某个节点 active 为 true 触发了onEnable -> init -> interactable = false
- 运行时自动触发 onEnable -> init -> interactable = false
是哪种流程呢?
在场景中的 onEnable 调用 场景中节点的 init 函数,init函数中,设置 interactable = false,结果是 按钮不可点击,但没有置灰。
场景和节点在编辑器中 active 都是 true。
也就是 您说 的 2

我这边是正常的,用的也是 2.3.3 版本,最好还是提供一个 demo 吧

总不是没选中吧
我的错,要置灰的按钮,开始时是 active=false
先init了,然后 再之后某个时机才触发,让其显示
那这样是不行的,active 为 false 的话是无效的,你应该先激活在设置
emmm
好吧,可是同样的地方,同样的时机,

我自己手动把spine置灰,就是可以的··········
或者你调试一下,看看为什么无法置灰,this._sprite 应该是有的吧?
如果不好查,最好还是给一下 demo,我这边才好排查