2.4.3 BUG:平铺九宫图显示异常

  • Creator 版本:2.4.3
  • 目标平台: 所有发布版本
  • BUG:如果要用平铺九宫图,就不能用自动旋转的自动图集。
  • 重现方式:
    • 设置一个九宫图片。
    • 九宫图片文件夹添加自动图集。
    • 自动图集允许旋转,预览看看九宫图片在图集中是发生旋转的,如果没有旋转添加几个。
    • 平铺九宫格图片。
    • 发布 web 并运行看到异常显示。

test1.zip (1.1 MB)
想要的效果:
image-20201223125719287
实际效果:
image-20201223125838329

我们也出现了这个问题

为了避免误导,所以还是回复一下:此 bug 已经在 2.4.4 版本修复了,修复 pr :


为什么现在tiled和simple不能合批呀?感觉技术上让它们合批是可以做到的,但是测试的时候发现tiled的dataHash和simple的dataHash不同

dataHash不一致的原因好像是tiled模式不走动态合图导致的,因为不是一个图集就会导致它们的_textureHash不一致,进而导致dataHash不一致,那么为什么tiled模式不走动态合图呢? :thinking:

看了源码发现simple和slice它们的updateRenderData方法里会将图片打入动态合图,而tiled就没有这个过程,为什么tiled不走动态合图呢?本来按照官方文档道理上是可以合批的才对 :thinking:

我直接在tiled的updateRenderData方法里像其他模式一样加了一句

DynamicAtlasManager.instance.packToDynamicAtlas(sprite, frame);

这样居然就可以合批了!?
是不是引擎组当年把这个tiled脚本当成Tiledmap的东西了? :thinking:我这样搞没问题吧?
32捕获


图中场景我用了两个tiled的Sprie组件,以及若干simple模式的节点,现在这样居然可以合批了,没加这行代码之前drawcall是5现在是2

使用tiled如果合图了,然后设置的size又比较大的话,会不会很快把texture占满? 压力一下来到了传输通道上?

不使用动态合图的话可以手动将贴图package取消勾选,其实很多用tiled的图片不到,反而size太小容易导致mesh缓存爆炸才是真正的问题

试试设置个3000*3000的尺寸 看有问题不

等等你好像理解错了,如果你说的size是指调整UITransform的xy的大小的话,它调太大会爆mesh缓存,但是UITransform的大小不会影响动态合图的大小的

节点的UITransform设置如果大的话就多要一点mesh缓存,和texture没关系的

额. 这不是2.4吗? uiTransform是3.x的东西吧 3.x我没用过

我说的是3.x,可能是我最近在论坛说tiled合批的bug,开发组以为是这个bug,然后把这个帖子顶上来了,2.x的tiled默认支不支持动态合图我就不知道了

可以试试 在多平台 大size的情况下 有没有问题

2.x我试了,改size没问题,而且 2.x中tiled是支持合批:clown_face:(难怪大家都说3.x不如2.x)