opacity为0后dc没有减少

透明度为0,引擎还是在继续渲染节点,把active设置为false就不会计算drawcall了

我用的3.50版本在路口组件处,加下面代码,重写Renderable2D.updateAssembler就行,你试试:
Renderable2D.prototype.updateAssembler=function updateAssembler(render:any){
if (this._renderDataFlag) {
this._assembler!.updateRenderData(this, render);
this._renderDataFlag = false;
}
if (render._pOpacity>0 && this._renderFlag) {
this._render(render);
}
}

8赞

有的时候ui设计需要隐藏下层的界面,但是下层界面的脚本的逻辑还是需要在跑。

false不使用所有场景,比如滚动列表的item,我要把可视区域外的Item不可见减少dc,但active false后会导致layout布局缩进,在2.x版本我是设置透明度的

也有这个需求

多谢大佬,帅气的很。。。

1赞

这些基础功能还是希望引擎组能实现了。。

滚动列表一般你要自己去实现或者去抄一个,利用对象池来减少列表的实际显示对象,从而减少dc,另外就是通过改变渲染顺序,或者自动图集来减少dc。
active=false应该是最常见的手段吧。

用getcompent(cc.RenderComponent)把渲染关调就可以了

 for (let i = 0; i < this.children.length; i++) {
      this.children[i].getComponent(RenderComponent).enabled = false;
    }

这样?getComponent(RenderComponent)这里直接报空了

你这是节点上面没有组件吧,如果没有的话

for (let i = 0; i < this.children.length; i++) {
let node = this.childer[i];
let RenderComponent = node .getComponentsInChildren(cc.RenderComponent);

        if (RenderComponent) {

            for (let index = 0; index < RenderComponent.length; index++) {

                RenderComponent[index].enabled = containsNode;

            }

        }
}

我有空再试试 放假回家了哈哈哈

为啥我用3.6.3还是有这个问题啊

UIOpacity这个组件透明度设置0 不会降dc吗

还没修复呢,pr又延后到3.7.2去了不知道何年何月哦

希望官网这个问题就不要改了,我们项目已经所有=0的情况都用UIRender.enabled=false取代,官网要是改了,我们就白忙活了 /doge

2.4这个问题也还在呢
Canvas的设为0之后dc一点变化没有
@jare @215194780

2.4没得问题哦,这里针对的是节点透明度为0
看官方pr已经完成了3.x的这个BUG在3.7.2会修复