Unity 性能优化(一)

前言

Unity的项目优化已经是老生常谈,很多人在项目完成之后,即便创意新颖,也会觉得差强人意,原因就在于没有做详细的项目优化。众所周知,Unity是一个综合性的3D开发引擎,其中包含图像渲染,逻辑处理,数据存储,发布测试等等各方面的内容。因此Unity各个方面都存在的待优化的内容,也可以说项目优化是项目开发中必不可少的一项工作。本篇文章会从项目的各个方面分析Unity待优化的内容,并给出优化方案,全面优化你的项目。优化项目无非是减轻系统的功耗负担,故下面从CPU、GPU、内存三方面的优化来讲解。


大纲
  • CPU优化

    • DrawCalls

      什么是DrawCall?

      Unity每次在准备数据并通知GPU渲染的过程称为一次DrawCall

      为什么要优化DrawCall?

      因为通知给GPU这个工作是由CPU来完成的,
      完成每一次DrawCall都需要CPU完成很多的内容,
      因此如果DrawCall很多的话CPU一定是不堪重负。
      但对于GPU而言,很多的工作都是一样的,
      也就是说很多的DrawCall是没有意义的,
      可以理解为很多次的DrawCall都可以合并为一次,
      这样减轻了CPU的负担,
      同样也可以通知GPU完成相应的工作。
      因此减少DrawCall成了优化CPU的第一要务。
      • 降低DrawCall第一步–>Draw Call Batching(批处理)

        两个或多个纹理相同或材质相同的网格模型可以批量处理他们的材质,这样就可以将多个模型的材质DrawCall合并为一个,从而达到减少DrawCall的目的。批处理是系统工作范畴,我们只需要选择即可,批处理又分为静态批处理和动态批处理。

        1. Static Batching 静态批处理

          场景中有很多游戏对象,其中静态对象(Inspector勾选Static的)可以通过静态批处理来优化DrawCall。


          静态游戏对象

          下面我们通过具体实例来验证:
          在场景中创建四个游戏对象Cube,Sphere, Capsule, Cylinder,默认为非静态。此时运行游戏,DrawCall如下。


          非静态四个对象的DrawCall为4

          此时,DrawCall为4,Saved by batching

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值