Unity项目性能优化整理

1.Mono下减少foreach使用,频繁调用容易触及堆上限,导致GC过早触发,出现卡顿现象。尤其是Update中如果非必要不要使用foreach。会产生GC Alloc。

2.频繁修改的string应使用StringBuilder。

3.gameObject.tag会在内部循环调用对象分配的标签属性以及拷贝额外的内存,推荐使用gameObject.CompareTag(“xxx”)来代替.tag。

4.贴图压缩:
(1).能使用九宫格就不要使用大图。
(2).可以上tinypng网站对原始图片进行压缩。
(3).如果有镜头拉远需求可以通过使用不同尺寸图片进行压缩(内存换性能,lod)。
(4).图片尺寸尽量使用2的整数幂,长宽比为正方形。
(5).UI、2D场景可以把GenerateMipMaps这个设置去掉。这个功能用于纹理根据相机距离不同显示精度不同,2D游戏和UI不需要。
(6).可以压缩图片格式减小大小。
自动压图工具
在这里插入图片描述

5.内存回收
(1).异步加载场景防止卡顿。
(2).减少Instantiate和Destroy,合理使用对象池。
(3).对于使用Resources.Load或者AB包等方式动态加载生成的游戏对象,回收时不只是使用Destroy,还要注意回收Asset。

6.UI相关
(1).不需要射线检测的UI取消勾选raycastTarget。
(2).UGUI会自动合并批次,原理是它会把一个Canvas 下的所有元素合并在一个Mesh 里。如果Canvas下的元素很多,任意一个元素发生位置 大小 的改变,就需要重新合并所有元素的Mesh 。如果元素非常多的话,可能就会造成卡顿。
一个比较好的做法就是每个UI界面都设置成一个Canvas 。如果这个界面的元素比较多,可以考虑多套几个Canvas 。尤其是会频繁改变位置大小的元素。这样就可以降低它合并Mesh的开销。而且层级管理更方便。
但是Canvas 套的太多也不太好,Mesh合并是降低了,但是DrawCall上去了,因为每个Canvas 都会单独占用一个DrawCall。需要根据需求去取舍。

7.使用Unity工具Profiler进行性能分析。利用BeginSample/EndSample可以对具体代码块进行性能分析。

8.Log也会消耗性能,发布时注意关闭。一行代码关闭Log

9.对于骨骼动画的模型可以通过勾选OptimizeGameObject优化性能。
要注意骨骼朝向问题

在这里插入图片描述
10.LOD、遮挡剔除、静态合批,动态合批。

11.减少调用Camera.main。
Camera.main实际为GameObject.FindGameObjectsWithTag(“MainCamera”)。不要频繁调用GetComponent。

12.能用Vector3.zero这种预设好的就不要new Vector(0,0,0),会浪费内存。

13.减少使用透明物体以减少overdraw。

14.减少实时光照,用光照烘焙代替。

关于资源加载
(1).只有第一次加载资源会消耗性能,第一次加载过后会缓存在内存中。(除非释放掉了)
(2).切换场景会将不销毁对象之外的场景内存清除。
(3).如果加载后的内存有引用将无法释放。

后续会持续更新。

相关文章

Unity游戏项目常见性能问题
深入浅出聊Unity3D优化:从Draw Calls到GC

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Unity Spine是一种专门用于游戏开发的骨骼动画工具。为了提高性能,以下是一些可以优化Unity Spine性能的方法。 首先,合理使用骨骼动画的复杂度。骨骼动画的复杂程度会直接影响性能。因此,需要谨慎设置骨骼数量和使用的骨骼动画的复杂度,以免过多的骨骼导致性能下降。 其次,减少渲染批次。在使用Unity Spine时,会生成一些渲染批次,过多的渲染批次会导致性能下降。为了减少渲染批次,可以合并相同材质和层级的骨骼动画,或者使用Sprite Atlas进行合并。 另外,注意资源管理。加载过多的骨骼动画资源可能会导致性能问题。可以在游戏中使用异步加载来减少资源加载时的卡顿现象。另外,需要在游戏播放过程中及时释放不再使用的资源,避免资源的过度占用。 优化渲染性能也是重要的一点。可以使用动态批处理来减少Draw Call的数量,或者使用静态批处理来合并静态物体的渲染。此外,通过限制每帧的更新频率和动画播放速度,也可以减少性能的消耗。 最后,进行测试和优化。在进行性能优化之前,需要进行测试,找出存在性能问题的地方。可以使用Unity Profiler或外部性能测试工具来进行分析。通过定位性能瓶颈,有针对性地进行优化,以提高游戏的运行效果。 总之,通过合理设置骨骼动画的复杂度、减少渲染批次、注意资源管理、优化渲染性能以及进行测试和优化,可以有效地提升Unity Spine的性能。同时,开发者还应根据具体项目需求灵活选择合适的优化方法。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我寄人间雪满头丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值