奇葩需求的性能优化问题

有一个奇葩的需求,就是关卡地图是由小方块拼成的!对没错,就是一个一个的正方形方块,但是不同的是每个方块的spriteFrame是不一样的,也就是每个方块的皮肤都是随机的,我该怎么优化才能消耗最小呢?现在做成预制资源每个方块也占用着一个Draw call,问题来了,一个关卡拼起来几百个的话是不是就要消耗几百个Draw call,有无优化的方案?

小方块图片先合成大图呗

但是这个奇葩的需求就是每次进入场景都要随机生成皮肤,奇葩就奇葩在这里了,哈哈哈哈哈哈,先生成大图就变成固定了

一个 是动态合大图,另一个就是 像我目前做的 自己做一套动态 合并drawcall的方法,这样有几种spriteFrame就多少个drawcall

小方块图片先合成大图呗

小方块图片先合成大图呗

多谢指教,请问有相应的文章可以学习么?

一般情况下合图合理的话是可以降低 draw call 的,和是否使用 prefab 没关系。你可以看一下我这个游戏里面的地图组件

https://github.com/pandamicro/HappyTreeFriends/blob/master/assets/scripts/Map.js

基本原理是创建一次地图之后,地图发生任何改变都不去做对象的重复创建和销毁,只是修改属性

1赞

可以 看看CCRenderer.cpp这里的 ,我的做法是在这里把rendercommand重新排序 把使用同一个材质的 command排成连续的

1赞

谢谢各位指教,合图后问题解决了,用了TexturePackerGUI,谢谢各位了