Unity优化利器: Meshbaker
meshbaker大名是在2015年4月份的Unite大会上出现的。合并mesh解决设备运行卡顿问题。

原理:为了减少dc,想用meshbaker区合并场景内的网格和贴图。
从drawCall 60左右 降到了十几个,属于优化利器
故,合并的对象,首先考虑使用同一种材质,其次考虑使用同一种着色器。
Step 1: Shader in Scene
依据shader,对场景中的Mesh进行分类,每一类,使用一个MeshBaker的思想。 点击“Open Tools For Adding Objects”,会弹出“MB3_MeshBaker”窗口,点击“List Shaders In Scene”,将会在控制台列出场景中所使用到的着色器,并且指出哪些对象使用。这对于规划哪些对象进行合并非常有用:

Step2: add Selected meshes to Target
选中要合并的对象,在“MB3_MeshBaker”窗口里,设置需要过滤的类型,可以依据所使用的材质、着色器等进行过滤。接着,点击“Add Selected Meshes”。
Step3: Create Empty asset
点击“Create Empty Assets For Combined Material”,将会创建一个合并材质记录文件,这里取名为Mat1。
Step 4: Bake Materis into Combined Material
设置好烘培选项,这些选项的意义可以参看帮助手册。然后,点击“Bake Materials into a Combined Material”,将会生成合并后的材质文件。

Step5: Bake
设置网格烘培选项,默认烘培完成的网格是生成到场景对象的。最后,点击“Bake”,将会生成一个包含合并后网格的新对象。 选择MultiMeshBaker.Bake按钮。
同时,也可以禁用原Renderers: Disable Renderers On Source Objects。

大量的试验:计算机是个有趣的系统工程,大量的试验,必不可少!


Q&A 1: 超过64k vertices 怎么办?
“Cannot add objects. Resulting mesh will have more than 64k vertices.
Try using a Multi-MeshBaker component. This will split the combined mesh into
several meshes. You don't have to re-configure the MB2_TextureBaker. Just
remove the MB2_MeshBaker component and add a MB2_MultiMeshBaker component.?”
使用MultiMeshBaker即可。

Q&A 2: 动态Mesh 怎么办?
Renderer选择 Skinned Mesh Renderer。

转载:
http://zhuanlan.zhihu.com/p/31332655?from_voters_page=true
Unity优化利器: Meshbaker - 知乎 (zhihu.com)