Unity性能优化

浅谈Unity常用性能优化

因为做项目用到了一些也查了很多资料,所以想记录一下自己的工作经验,希望跟大家分享一下,大佬勿喷。
在我个人理解,性能优化就是找平衡,内存,cpu,渲染之间的一种平衡。优化一定不能盲目的优化,肯定是有方向的,有目的性的优化,否则肯定会出引发出别的问题。优化一定要找到优化的瓶颈在哪,具体是cpu,内存,还是渲染。然后让他们三者之间有一些取舍,从而达到适合自己项目的优化方案。

CPU相关优化

CPU性能优化主要包括四个方向,DrawCalls,物理组件,GC,程序代码质量。

  1. DrawCalls ,首先我们要弄清楚什么是Drawcall,其实DC 就是一条渲染指令,由cpu 发送到gpu的渲染指令。既然是渲染指令,那么里面肯定是为了把渲染数据传输到GPU,其中包括顶点数据,材质,纹理,着色器。因而 DrawCall数量过多就会导致CPU进行大量计算,进而导致CPU的过载,影响游戏运行效率。所以我们要合理优化Drawcall
    1.在游戏项目里面最常用的就是 图集,和精灵 一个是ngui,一个ugui的,这个就不多做描述了。因为我项目用到的多数都是ngui,所以我重点讲诉ngui的。在NGUI框架中,会有一个静态的list用来存放所有的Panel,然后每个单独的Panel下会保存自己的UIWidget和UIDrawCall,就是在每次绘制的时候panle会遍历自己下面的所有层级下的子物体,直到查找结束,或者遇到新的panel会跳出当前分支,继续寻找其他分支,直到全部查找结束。所以panel 就是一个渲染单元。我们要记住,在同一个panel下,同一个图集要保证渲染顺序连续,不能穿插有别的图集的图片,否则就会增加一个dc。比如 同一个panel下面,有三张图,图1,depth =1 ,图集 =A,图2,depth =2 ,图集 =A,图3,depth =3 ,图集 =B 这个时候,就是2个dc,但是如果 图1,depth =1 ,图集 =A,图2,depth =2 ,图集 =B,图3,depth =3 ,图集 =A 那么就是3个dc,因为图集a的渲染顺序被打断了。
    2> 动静分离,把比如说boss血条,以及会更新的文本,放到一个单独的panel下面。
    3> 不显示的UI,比如主界面,往往dc很高,但是打开其他全屏界面的时候,这个时候其实完全可以把它不渲染,这里不是直接setactive = false,因为这样会导致再显示出来,造成额外的消耗,其实可以专门改变一个相机不渲染的layer 。这样就不会导致额外的消耗,但是要注意屏蔽点击事件。
    4>尽量少的使用反光啦,阴影之类的,这些会使物体多次渲染。

    批处理: 我们都知道游戏里面有静态批处理,以及动态批处理 批处理的前提条件就是相同材质的才能合并。静态批处理来

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Debug_尚尚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值