Unity游戏优化 纲要
(本章只是目录和概要,详细内容看分类上的链接。)
搞到了一本书讲的是优化方面的,浏览了一遍发现对我很有价值,不够很深,但是在宽度上涉及比较广。学习一遍记录下笔记。
作用:
- 自己书写记录一遍,比简单的读一遍收获效率高。以前读书只是草率的通读,导致一遍看完过段时间,内容细节都遗忘了,不得不重新读,反复读。这实际上相当于之前读的时间被浪费了。(还是要拿出高中时学习的方法…)
- 秉持把书读薄的原则,自己读一遍,记录自己认为重要和不懂得地方,方便复习。第二点是做学习总结,组织起框架和逻辑体系。
- 秉持把书读厚的原则,方便以后在细节和广度上扩展。以后学到关于优化的点都能补充到这里。
性能优化的目标之一是最大化地利用可用资源,包括:
CPU资源:如销毁的CPU循环数,使用的主存空间RAM大小;
GPU资源:显存VRAM和内存带宽,填充率等;
最重要的目标是确保没有哪个资源不合时宜的导致性能瓶颈,优先级最高的任务得到优先执行(这句话不知道和性能优化有什么关系,有懂得大佬可以举个栗子说明下)。
判断一个性能问题是否值得修复的最佳方法是:用户会注意到它吗?。如果不是那么就是白费力气,有句老话:过早的优化是万恶之源。
导致瓶颈的原因不管是持续的CPU负载,运行时CPU峰值,缓慢的内存访问,内存碎片,垃圾回收,糟糕的GPU填充率,还是内存带宽 等问题的识别根源及其减少影响的多种方式。
1.研究性能问题
1. 任务清单
查找性能问题一个通用的任务清单:
- 验证目标脚本是否出现在场景中
在Hierarchy中输入 t:< monobehaviour name > - 验证脚本在场景中出现的次数是否正确
- 验证事件的正确顺序
- 最小化正在进行的代码更改
- 尽量减少内部干扰
- 尽量减少外部干扰
2. UnityProfiler
首先,利用UnityProfiler检测性能瓶颈和分析问题根源。
本章节实现以下目标:
- 如何使用UnityProfiler收集分析数据
- 如何分析UnityProfiler数据以找到性能瓶颈
- 隔离性能问题并确定问题根源
UnityProfiler远程连接到iOS设备
https://docs.unity3d.com/Manual/TroubleShootingIPhone.html
UnityProfiler远程连接到Android设备
https://docs.unity3d.com/Manual/TroubleShootingAndroid.html
详情见分页:https://blog.csdn.net/Bilibili_Cheers/article/details/108076793
2.脚本策略
详情见分页: https://blog.csdn.net/Bilibili_Cheers/article/details/108079947
3.批处理和GPU Instancin优势
批处理这块,网上很多资料都是人云亦云,要么抄的批处理的几个限制条件。要么作者都是稀里糊涂的,强行理解为合并Mesh什么的。其实原因都是对渲染流程的不了解导致的。
详情见分页: https://blog.csdn.net/Bilibili_Cheers/article/details/108081650
4.艺术资源处理
5.加速物理
6.实时渲染
https://blog.csdn.net/Bilibili_Cheers/article/details/108131440