renderManager有个问题

  • Creator 版本:3.8.0

  • 目标平台:

  • 重现方式:一个label+一个sprite,监听label的sizeChange,然后设置sprite的高度

  • 首个报错:

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:window

  • 重现概率:必现


做聊天列表的时候,需要把气泡背景的高度适应聊天文本的高度,重现方式如上所述。
检查引擎代码后发现

尝试把label设置为sprite的子节点,然后通过layout组件来实现功能。实际运行发现会有一帧的延迟,表现上会有跳帧的感觉。

请问还有其他的解决办法吗?

肯定有延迟啊,你赋值完以后直接调用一下label的刷新就好了~

@minggo 这是设计如此还是bug?

是,有bug,当前帧压进去,还没处理,又清空
等新版 3.8.4 : PR

看了下修改还是有问题,只解决了这一帧sprite本身没更新的情况,要是这一帧sprite先于label markDirty了,然后label变化,这时候因为已经在队列里了,没办法markDirty,导致拿到的数据还是错的。这边自己重写个uiRenderManager,hack掉tick来解决

1赞

这文件没暴露出来,只能定制改引擎

自己写个新的manager,把director的tick里cocos自己的uirenderManger删了就行