Unity6性能优化(7)——基础——项目与管线设置分析与优化


 

工程及管线设置初步分析

  • 若项目使用的是第三方音乐音效解决方案时,可以关闭Unity Audio模块(Project Settings-Audio-Disable Unity Audio),避免CPU上的额外开销

  • Graphics通用设置中需要根据场景特性做一些Shader层面的剔除

    • 包括Lightmap与默认雾效的Shader变体,可以从场景中直接导入来做剔除
    • Instancing的Shader变体一般使用Strip Unused剔除不用的变体
    • 若工程中没用开启GPU Resident Drawer功能,也没有直接调用BRG(BatchRenderGroup)接口,所以BRG Shader变体可以选择Strip All
    • 如果没用使用视频,可以选择不包含视频的Shader(Video——Don’t include)
    • 管线设置中,由于目标平台是PC,追求的是更高的画面表现,所以不做用表现换性能的优化设置,但有两点需要提议
      • Unity6.1上,新增加了一个Lightmap Bicubic的采样设置,它是为了追求更好的光照贴图的表现,而新增加的一种采样过滤,所以选择开启它(Use Bicubic Lightmap Sampling),在部分移动端可能会有性能问题,PC端可忽略
      • 另外一个设置是Strip Runtime Debug Shaders选项,默认情况下需要开启它来剔除一些运行时的Debug Shader变体,优化完成后、发布前将其开启
  • Memory Settings设置是针对一些特殊项目需要额外设置的,后续具体讲解

  • Physics物理的设置,由于使用了CharacterController,其里面都用到了物理模块,所以不能完全关闭物理模块,而是需要再其中优化

    • 设置碰撞矩阵可以帮我们过滤掉不必要的碰撞检测,依此来优化CPU上的性能
    • GameObject设置部分,如果只做碰撞,不做物理模拟时,可以将Simulation Mode由FixedUpdate改成ByScript来手动关闭物理模拟,这样即使需要物理模拟时,我们仍可以通过脚本控制模拟频率来降低CPU开销
    • Auto Sync Transform选项在案例项目中可以不开启;Reuse Collision Callbacks应该本项目中应该开启。这些选项在性能优化-物理优化篇已经介绍过
  • Physics 2D设置,由于案例项目没有用到2D物理,所以可以同样将Simulation Mode设为By Script,同时关闭碰撞矩阵避免额外的开销

  • Player设置中,有很多选项是平台和兼容性相关的,这些设置的优化要根据具体情况而定

    • 本次只做Default Chunk count由8个变为1个,因为案例场景的Shader复杂度没有多高,开太大的Buffer会造成内存上的浪费
    • Optimization下,由于场景中没有太多运行时生成的碰撞体,也没有大量的带碰撞体的场景切换,所以可以关闭Prebake Collision Meshes,只将Managed Stripping Level设置成high,以及设置了Texture Mipmap Stripping,目的是为了一些托管代码的剔除和未来开启Texture Mipmap Stripping优化内存与显存做准备
  • Quality设置中,由于是PC游戏,所以也暂时不做效果剔除上的优化了

  • Time设置中,由于没有较多的物理模拟,所以保持默认设置就好


  • 总之,对目标项目的项目设置优化,在早期就按上面几个标签顺序,做初步的分析与优化就好
  • 管线设置方面,在项目的早期,只要做好高中低分级就好,可以参考模板项目中不同平台高中低配默认配置来做分级
  • 在表现方面暂时不做设置上的优化,只需要对Rendering Path做好选择
  • 实时光源的数量是选择渲染路径的一个重要参考
  • 目标平台、场景复杂度、目标设备的配置,也是选择不同渲染路径的重要参考

选择矩阵

  • 一般来说,PC平台上除了特别简单的场景,用前向渲染外,其他都可以选择延时管线
  • 如果场景复杂、灯光复杂,基本上就用Deferred+就好
  • 延时管线可以配合Forward结合使用,更方便做效果的扩展
  • 移动平台目前随着芯片越来越好,基本上也可以通过ComputeShader做更多的加速,而一些低端设备则可以利用片上存储来减少带宽,通过延时管线提高兼容适配,只有一些超低端的设备依旧需要使用传统的前向渲染
  • 总之,所有的策略选择都是有一定局限性和特殊性的,这里仅作参考