一直在想这个问题但是怕(lan)看源码,在不考虑遮挡的情况下应该是很方便了 
思路很有启发,挺好
要是能完善完善就好了 
学习马克一下
是的。按照传统的节点树。比如说父节点,子节点,孙节点的结构。 那么
孙节点的透明度= 父节点透明度 x 子节点透明度 x 孙节点透明度
现在因为没有节点树的概念了。
这个透明度计算只能是 任意子节点或者孙节点透明度 = 最高父节点(即例子里的content的)透明度 x 自身透明度
大佬 请问下 “提交渲染” ,和 “顺序” 怎么立即呀? 能不能稍微讲讲这个知识点呀 
这个提交渲染的过程在 batcher-2d.ts的 walk函数里。建议在浏览器里调试项目的时候。在这个walk函数里打个断点。然后看调用堆栈。可以发现是从director.ts这个类里每帧都进行了渲染的排序。
cocos的drawcall节省更多的是从节点层级去动手,在放节点的时候就考虑到哪些节点可以进行合批。
比如你的个例子,需要做的是把按钮放在一个节点里,颜色放在一个节点里,文本放在一个节点里,
就这么说吧,如果有几百个精灵,你怎么去保证你调整过的渲染顺序的结果,是和按照层级关系的渲染顺序渲染的效果是一样的?
你说的这种方式我确实见过。但是有个弊端就是。比如说我点击一个按钮的时候,按钮有一个缩放的动作。在这种方式下,点击按钮,发现按钮上的字体文本没有跟着按钮一起缩放。当然也可以通过代码去控制一下这个缩放,但是有增加了代码的复杂度。
所以不论是我的方法,还是你说的方法,。都有利弊。只能从项目的实际需求出发。做出一个合理的选择。
就这么说吧,如果有几百个精灵,你怎么去保证你调整过的渲染顺序的结果,是和按照层级关系的渲染顺序渲染的效果是一样的?
这个问题是只有充分的测试才能保证。我没法保证。所以这个方法才是可以挑选一个局部的节点团来测试。保证你的修改是局限于一个可控制的节点团呀。
如何更換源碼呢?
就是你找到你下载的引擎目录呀。我mac的是 应用程序/CocosCreator/3.3.1/CocosCrreator.app。
然后右键“显示包内容”。
里边有源代码
其实就是深度搜索改为广度搜索,很适合优化大背包,其他应用场景就没这么简单粗暴了
这也许有用吧, 先点个赞。
这种做法只适合于定制化的场景,不可能做成通用的做法。
但如果是定制化的场景,去调整层级关系也可以实现。
所以总的来说,我不觉得你的这种做法是一个通用的优化方式。
当然,对你这种探索精神还是值得肯定的。
这种做法只适合于定制化的场景,不可能做成通用的做法。
但如果是定制化的场景,去调整层级关系也可以实现。
虽然实现方式不竟相同,但是在一次技术分享上,我依稀记得《梦求游戏》的《新斗罗大陆》里的背包为了降低 DC,就是用了这种修改提交渲染的思路。我真的很好奇,为什么你如此的自信,就断言
但如果是定制化的场景,去调整层级关系也可以实现。

楼主这种方式对于 listview 优化 DC,相比改层级能简单不少
因为你的这种做法我想过也做过,绕了半天发现还不如就回过头来用节点顺序去处理。最主要的是,这渲染方式很绕,我个人评价那代码只能我自己一个人用。
掌教说的对
那个2.x的没有找到这个源码文件,2.x能使用不?
2.X和3.X的区别很大的,。应该不能直接套用