Creator 为什么不能用 cascade color 设定子节点的 Color

请问一下我创出一个Node后
下面有两个子节点 分别为两个Sprite
当Node修改颜色后 子节点两个Sprite的颜色没有更动

但是修改透明度 子节点的透明度却是会一起更动

是否有setCascadeColorEnabled可以设定??

版本v1.1.1

感谢

cascadeColor 这个 api 已经被去掉了,因为这个使用需求比较少,而且用的多对性能有影响
这个需求你可以在代码里面同步对子节点进行 color 的设置

可是假如Node有子节点很多, 而子节点又有子节点! 这样照理讲是只要设定外部的颜色 里面颜色就会跟着一起变

而不是要分开设定!!

感谢

  • 可以做一次遍历,从 API 设计层面,这样做的话成本对于用户来说就很明确了,你实际上修改了所有节点的颜色。这个操作并不是免费的,让用户感受到它的成本,也是我们这样设计 API 的用意。
  • 你也可以用一个半透明蒙板层达到类似修改颜色的效果。

继承父节点的颜色这件事情,在大多数情况下都是用户所不需要的,你的需求确实存在,但是并不多见。而修改颜色的成本我需要解释一下:

  1. 在 Canvas 渲染模式下,它会生成一张新的贴图,这张贴图是通过颜色混合来绘制的,对于每一个修改颜色的节点的每次颜色修改都会产生新的贴图,而贴图数量增加带来的是内存的显著增长,以及绘制新贴图也会带来渲染开销的增长。
  2. 在 WebGL 渲染模式下,成本会好很多,我们不需要单独生成贴图,只需要在 color buffer 中传递正确的颜色即可,但是要注意,GPU 做颜色混合一样也存在成本,只是没那么明显。

引擎设计过程中,有很多选择,对于 cascade color,我们不希望用户经常使用它,同时由于它只是一个属性赋值,我们更不希望用户认为,这是成本很低的一件事情,所以我们认为应该去掉这个需求并不强烈的 API。

5赞

只能说点赞好吧,这个解释破费

其实……简单来说就是为了提高性能所以去掉了这个功能,而并不是因为需求小。:joy:

与其去掉还不如丰富一下文档说明!!!!!!!

1赞