Unity3d 场景大小和drawcall优化

在unity3d开发中,为了降低场景的运行消耗,通常要利用Unity3d的静态合批和动态合批。因为动态合批要求的条件比较苛刻。所以大部分用的都是静态核批。
利用静态核批就需要尽量的合并场景的贴图,用相同的材质。并把场景物件设置成静态的。这样unity在运行的时候就会自动进行合批,从而降低drawcall。
这样的静态设置在打包的时候就有问题了。因为当你把预设设置成静态之后,在打包的时候是不会进行去重打包的。也就是同样的两个预设只要设置成静态的,就会被打成两份,最终占用两份的包空间。这在游戏项目的空间浪费是很客观的。因为目前游戏的关卡基本都是分章节的。每章用的基本都是一样的模型,只是位置不同。
如果不设置成静态,drawcall又会很多。为了两者都兼备,这里可以利用unity提供的一个api。在打包的时候所以的场景预设都取消静态设置,在运行的时候调用StaticBatchingUtility.Combine(gameObject);gameobject就是场景预设。这样就可以进行静态合批,无论你有没有设置预设为静态。这样就既减少了drawcall又节省了包体空间。

你可能感兴趣的:(Unity3d技术点)