慎用Sprite 组件的【Tiled】,卡到爆炸,怀疑人生

cocos creater 3.8.3版本

本来Sprite 组件的Type属性我要设置为【Sliced】,但是由于疏忽,不小心错误选到了【Tiled】
然后出现了:
Draw Call 增加,Triangle爆增,Frame time从2.7降到0.4ms左右,导致网页预览卡到爆炸

经过测试:
如果图片尺寸接近屏幕大小使用【Tiled】影响不大
如果图片是小图使用【Tiled】卡到怀疑人生

按我的理解【Tiled】就是把一张图平铺到屏幕,应该只占1个Draw Call ,怎么会出现上述情况?

下面只有2个列表数据,不是很明显,如果列表增加,那么Draw Call,Triangle,Frame time
都会翻倍增加

3赞

没错这个东西貌似有bug,如果调整了图片的九宫格之后使用tiled的话会增加许多运算,而且在东西还不能合批,之前还想用tiled改一个可以合批的粒子系统出来,结果一看晕了 :upside_down_face:

cocos【Tiled】实现的方式,就是额外增加vertex。
可以理解为,大图就是n个小图拼接起来的。那么大图vertex= 小图vertex* n
自然Triangle也会更高了

如果动了图片的九宫格triangle暴涨的非常离谱,应该有bug

楼主这种本来要用sliced的图片肯定是编辑过了九宫格的

嗯,九宫的没试过。
但实现应该也一样的,就是不清楚会额外绘制多少vertex。
确实是个缺陷

显示区域像素的长宽,除以纹理实际像素长宽,

编辑了九宫格后,我测试的时候会比没编辑过的翻了几十上百倍,没编辑的挺正常的

slice 九宫,是3x3 ,由此得来,翻几十倍不太正常哦

一张九宫就已经有18个triangle,
重复的是中间部分,2倍宽的情况下,就增加了6个triangle
当宽高都成倍的话,你可以计算一下

普通图2个三角形
九宫格18个三角形
这个差别对gpu来说根本没感觉
爆卡肯定是代码实现层面的问题

用tiled调整一下UItransform翻的太猛了