【前言】

优化是影响游戏体验的一个重要因素,好的优化,能够让玩家手感,体验达到最佳,而优化太差,会导致很多问题,比如内存溢出,掉帧,游戏体验极差,如果我们制作的游戏【第一印象分】不好,玩家就会很快认为你的游戏是【垃圾的游戏】,优化和不优化的游戏在执行效率上可以达到可怕的【十倍】的差距!

【游戏模型制作规范、优化】

由于unity在游戏开发中,并不擅长与对游戏资源的制作修改,更擅长于管理。所以我们在把素材提供给代码工程师的时候,就要把素材做到能够最节省CPU开销,那么怎么才能最节省计算资源呢?
主要有两点:

  1. 三角面少
  2. SetPass Calls 低

三角面的多少这个需要我们的建模师有扎实的基础,基础越好,三角面就越低。

那么setpass calls又是什么呢?

就是渲染改变次数。每个改变 需要Unity运行时绑定一个新的渲染器,它可能会引入 CPU 开销。
那么我们就知道了,想要CPU开销低,我们就需要让SetPass Calls低一点。

于是我们就有以下几点规范:

  1. 同一个场景,应该尽量公用同一张贴图。
  2. 一个场景的贴图数量控制在10个左右,越少越好!
  3. 琐碎的小贴图,合并为一张1024*1024的大贴图。
  4. 如果涉及到ios开发,禁止使用dds格式的图片,因为ios平台并不支持dds格式。
  5. 看不到的面及时删掉,场景同屏面数控制在8000左右。
  6. 导出模型的时候,应该打组导出,不应该合并,这样可以减少同屏面数。
  7. 根据需求,烘焙Static物体。

示例:

unity中简单场景 unity游戏场景_unity中简单场景


如上图,我们把场景中不同的四个箱子的贴图放在了一张上面,这样能够减少SetPass Calls。

【为什么不能合并模型导出,而要打组呢?】


我们来看看“合并”时的情况

这里,我们有一堆箱子它的三角面为108:

unity中简单场景 unity游戏场景_Unity_02


当我们摄像机只有该组物体一小部分的时候:

unity中简单场景 unity游戏场景_场景优化_03


我们看它的Tris(三角面)参数:108+2=110个!

对比上图,下面是“打组”的情况:

面数不变,我们直接来看摄像机只能看到一部分物体的情况:

unity中简单场景 unity游戏场景_优化_04

我们看它的Tris(三角面)参数:36+2=38个!