Unity | 性能优化

目录

一、总结Unity开发中耗时高的操作

1.资源及UI

2.场景设置

3.代码

二、堆内存

1.累积分析

(1)常见的会引起堆内存累积的Unity API:

(2)常见的会引起堆内存累积的System操作

(3)其他

2.泄露分析

三、CPU

1.瓶颈函数优化

(1)明显造成耗时的函数

(2)稍明显耗时函数

2.高频函数优化

(1)对于多个高频Update

(2)针对低频逻辑,轮循式改为事件队列

(3)针对高频逻辑,将高频访问的属性分离到单独的Array中

3.IL2CPP


一、总结Unity开发中耗时高的操作

1.资源及UI

  • 一般来说,纹理尺寸越大,占用的内存也就越大,一般情况我们推荐纹理尺寸为 512*512,如果 512*512 显示效果已经够用,那么就不要用 1024*1024 的纹理,因为后者的内存占用是前者的 4 倍。
  • 文本使用 Outline 效果会增加 4 倍的顶点数,造成较高的重建开销,可尝试用 shadow 替代。
  • 图片RGB32、RGB24 等非压缩格式的纹理占用内存较大,建议尽可能使用硬件支持的压缩纹理格式。
  • 图片Wrapmode 使用了 Repeat 模式,容易导致贴图边缘出现杂色。
  • 音频源文件为双声道且没有开启Force To Mono。在Android设备上,双声道音频意义不大,但是会占用双倍内存,建议使用单声道。
  • 音频文件Streaming 选项开启后,音频加载方式变为边播放边读取,会明显降低内存占用,一般建议背景音乐使用这种方式。
  • Read/Write 选项启用后,将会允许从脚本来访问网格数据,同时会产生网格数据的副本,占用额外内存,等同于一个网格数据会有接近2倍的内存消耗。但是对于需要使用StaticBatchingUtility.Combine进行合批的Mesh,以及部分Unity版本中粒子系统里使用到的Mesh,仍需要开启Mesh的Read/Write选项。
  • Mipmap开启后,内存会是未开启 Mipmap 的 1.33 倍,因为 Mipmap 会生成一组长宽依次减少一倍的纹理序列,一直生成到 1*1。 Mipmap 提升 GPU 效率,一般用于 3D 场景或角色,UI 不建议开启。
  • Tiled 模式的 Image 组件可能产生过多的面片。
  • 不建议使用面片数超过 500 的网格。
  • 粒子系统的Prewarm操作会在使用时的第一帧中造成相对集中的CPU耗时,很可能会造成运行时局部卡顿,建议考虑是否确实需要开启该选项,如果可以不用则将其关闭。
  • 粒子系统:不建议使用尺寸过大(256)的纹理。
  • 粒子系统建议不要开启Collison或Trigger功能,否则会有较高的物理开销。
  • ApplyRootMotion勾选后,更新动画时会将Root的运动信息应用到Animator所在的 GameObject上,会有一定的开销。一般对于主玩家这样的物体,要用动画控制人物前进 的情况下需要开启ApplyRootMotion,否则建议在ImportSettings中将动画的"Root Motion"bake到曲线中,并取消勾选ApplyRootMotion。
  • alpha=0, 且对应的Canvas Renderer组件没有开启Cull Transparent Mesh 的 Image 组件依然会参与渲染,建议进行排除。
  • Canvas下UI节点太多,会导致加载及UI重建耗时。

2.场景设置

  • 开启雾的效果,GPU 消耗提高。
  • MeshCollider 的开销较高,建议替换为简单碰撞体来简化物理碰撞的开销。
  • 接收音频的组件AudioListener正常情况只放一个。
  • Unity中开启了阴影的实时光照会对所有设置了cast shadow 的object进行实时阴 影渲染,使用forward rendering对每一个开启阴影的实时光照都会产生大量的渲染消 耗。通常推荐场景中只存在1个开启了shadow的实时光照,如需要多个光照,建议关闭 其他光照的阴影渲染。
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烫青菜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值