unity 静态合批

想做这样一个优化

因为cmd drawcall太多 materials太多导致 实际上只是贴图不一样

想用texture2DArray把他们合起来

texArray这步功能倒是很快就好了

但是从framedebugger看一直没有合起来 报的error是objects belong to different static batches

unity有一个枚举会把不能合批的原因列出来 这是其中之一

我就跟进去看。。。。看的我就很lost

代码里的意思是 smallMeshIndex不一样不能合并 这个东西其实就是meshID

但我从编辑器里能看到他俩已经是一个Mesh了 顶点数都是合过的 

后来意识到 是我做的另一件事情导致他们不能合批的 一测确实如此

unity 静态合批 功能是好的 前提是mesh必须静态的 不能运行时对mesh有更改

我为了做texArray的测试 在运行时 拿了mesh 改了uv  加了对texArray的索引 导致不能合批 去掉就变成一个drawcall了

而修正uv 这步 正确的工作流也应该是 编辑时 而不是运行时 所以目测这条路可行 开心

想了一下 我准备写个编辑器 解决objects have different materials(shader一样 只有贴图不一样 其它ubo不一样的 用一块buffer用instance也能解决 这个后期迭代了)

顺便其实能把mesh一起合了 不然unity运行时做静态合批 有这部分新建geometry的memory开销 好棒

https://i.cnblogs.com/EditPosts.aspx?postid=10557793&update=1

做出来了能出来lightmap没啥问题 建议location 局部使用

原文地址:https://www.cnblogs.com/minggoddess/p/10521754.html