3.0 layout组件在 Disable 后会失效

3.0中组件layout在 node.active = false 之后,再次node.active=true 这个组件会失效
还有个就是widget和layout也有问题,layout 下的子组件使用了widget,保存一次脚本,编辑器自动刷新后也会widget会重置

为什么Layout下的子节点同时又用widget?感觉layout与widget同为对齐作用的UI组件,逻辑上有冲突吧

描述还不够详细,需要更具体的 layout 和 widget 配置


第一张图片是我设置好对齐的图片

第二张图片我拷贝了个节点,这时候,场景中的对齐就失效了,回到了最初的位置,而且在浏览器中节点重新激活也会出现这种情况

我觉得看需求吧,有时候用widget可以省时间,不用自己去计算位置

layout组件节点下增加一个文本节点,横向自动撑开,当layout组件节点重新关闭激活一下,这个时候自动撑开宽度就失效了

的确会这样 我也遇到了 请问怎么解决的呢

不好意思,本来 3.0 应该修复的,看了一下 pr 被误关闭了,你们试试改这一个地方是不是就好了

https://github.com/cocos-creator/engine/pull/8281


我是这样改的,除了你说的那个地方需要改以外, 我还将onDisable中框选的部分注释掉了,如果不注释掉layout的padding还是会失效,不知道注释掉这行会不会有其他影响

我这里只改了上面说的地方,按之前上面的做法,我先把 layout 组件取消激活,然后修改 padding,再激活,是会进行重排的,layout 节点隐藏后再修改属性也是可以。你这里还有别的操作吗

我重新测试了下,不知道什么原因,按照上面的方式确实没问题,当时修改了确实有这个情况,后面我在编辑器中修改了重新编译了一次引擎就没有出现这种情况了,修改引擎源码后是不是需要编译编辑器才能正确执行

对的,那是一定要的,不然用的还是旧的代码,一般情况下,你如果直接改的就是内置引擎的话,重启编辑器它会自动编译