多次截图得到的图片如何合批

引擎版本:3.5

目前使用了camera + RenderTexture 方案多次截图,得到的图片无法合批,动态合图 和 图片的packable已经打开了,请问下是什么原因

还有一个就是截图得到的spriteFrame 如果开启了packable 会导致显示不出来

有无大佬看下啥情况

截图代码如下:
private static _capture(area: cc.Scene | cc.Node, rect: IRect): cc.RenderTexture {

    var camera = CaptureUtils.getCamera(), cNode = camera.node, texture = new cc.RenderTexture;

    texture.reset({ width: rect.width, height: rect.height });

    cNode.setPosition(rect.x, rect.y);

    area.addChild(cNode);

    camera.orthoHeight = rect.height / 2;

    camera.targetTexture = texture;

    // 执行渲染,单个渲染会报错,那就直接全部渲染一次吧(单个渲染:cc.director.root.pipeline.render([camera.camera]);)

    cc.director.root.frameMove(0);

    camera.targetTexture = null;

    cNode.parent = null;

    return texture;

}

你好,可以使用 DynamicAtlasManager 这个类中的 insertSpriteFrame 方法试试。

试了,能合批,但是合批以后 这些碎图显示不出来了,排查了很久不知道啥原因不展示了

目前引擎还不支持截图出来的碎图直接参与合图。这里提供一种定制引擎的方法实现这个功能:
在引擎的 atlas.ts 脚本中参考下图进行修改:


然后设置 spriteFrame 的 packable = true 即可。
以下是测试截图:

1赞