讨论一下 Drawcall 优化,大家来围观

我都是destory,还有其他需要卸载的地方吗?我就是切换场景的时候cc.sys回收下内存

这就是开发功能方便和优化性能的矛盾。如果相同贴图的节点放一起,有些要按功能组织的节点就没法摆了

2.0后的动态图集不就是为了达到这个目的吗

你是说把整个prebab里的所有节点都平级放一起?
这样可能会破坏原来的前后层级关系。

不是,动态图集只是帮你把工程目录自动打包成图集而已,跟手动打图集一样,节约了你手动打图集的步骤,但自动打图集是有弊端的。

动态加载的资源需要通过cc.loader.release(uuid)才能释放出内存。

你是混淆了动态图集和自动图集的概念吧…dynamicAtlas != autoAtlas

编程就是在各种最优之间取舍,很多的非全屏功能说明设计本身没有做好规划,加个遮罩隐藏底层面板这个最容易做的优化都没做就更不要纠结更麻烦的优化了。如果实在不能隐藏就把底层不响应的面板截图成sprite放在下面好了。。。

1赞

我是以为你想指的是自动打包图集。
除了label字体,其它有动态图集?

业务需求可不是一个人说了算,需要在不放弃表现效果的情况下做到流畅,尽量完整的实现设计者的设定,而你说的那些也仅仅是迫不得已才那样处理的一种方式。如果底层性能更好,提供的优化方案更多,那开发者实现功能可以更灵活嘛。当然,在性能瓶颈时,往往都需要放弃一些表现。

我知道一种优化方案:就是动态修改node的渲染顺序,将同图集和label渲染分开,就能达到优化drawcall的效果。
这种思路是参考fairyGUI,奈何本人才刚刚开始使用creater,还没有具体验证这种思路可不可行。

把label的zindex 置于非纹理图的最高层, laya也是这样处理的。这样就是

AAAABBBB AAAABBBB CCCCCCC

不用他的富文本和lable这样问题就解决了

听说 Mask 也会增加 Drawcall,可是我需要用到啊,有大佬支招吗?

尽量用背景色盖住多出的部分,而尽量不用mask。

mask增加drawcall是没办法的事,
因为mask的实现方法,无非stencil check或者rendered texture两种方法
cc显然用的第一种。都需要单独的渲染步骤。

最好的办法就是强行把ABC放进一个图集里。

如果从学术角度探讨,就只能把所有A、B、C的Sprite节点分别集中到3个Node下。

而你的Item不放任何cc.Sprite,而是放一个自己写一个Component,负责不断更新对应Sprite节点的位置……:confounded: (就感觉这个方法很滑稽)

我之前试过把A、B、C分Group。然后放3个Camera分别渲染A、B、C三个组,
且不说要全改成3D节点靠Z坐标控制遮挡关系……

Drawcall根本没降低!!!!:rage:

目前做的功能有多级弹框,drawcall能达到400+,真的难顶…

400+也太多了,怕是完全没用图集吧 :cold_sweat:
如果是预览模式那Drawcall不算数,要构建以后看才行

用了图集了,主要是item里面有些用到了spine以及label都会打断合批

不过话说回来,我预览模式,跟打包后装机的dc是一样高的耶…