1、FPS均值较低
CPU性能优化方案
频繁调用的Camera.main
建议脚本做好Main Camera的Cache。Camera.main实际为GameObject.FindGameObjectsWithTag(“MainCamera”)调用,主要因为引擎无法得知用户通过脚本设置的MainCamera,CPU消耗较高。
脚本中大量UnityEngine.Object的判等操作
建议改为用InstanceID来判断即Object. GetInstanceID,运行期间保证唯一。 因为Object的判等还有额外的耗时操作,而Int类型的判等就非常快速了。同理,使用Object作为key的数据结构也建议改用InstanceID做key。
用于查询操作的数据使用list数据结构
List线性结构Contains的耗时非常高,建议改为hashset,hashtable之类的查询操作效率高的数据结构。
加载资源时每帧从Assetbundle加载的Asset数量没有限制
在场景内每帧从Assetbundle加载的Asset数建议限制在2到5个,数量高时耗时过长容易造成卡顿。
模型导入设置[Rig]选项页中Optimize GameObject没有勾选
建议开启Optimize GameObject,这个选项可以把SceneManager中用于skinning的节点都去除,节省了场景节点树更新以及查询的CPU消耗,对于需要做挂点的节点可以添加到例外列表中。
使用第三方音频插件时没有禁用Unity内置音频
不需要使用Unity内置音频模块的时候,建议Editor中通过勾选Edit->Project Settings->Audio->Disable Unity Audio来完全禁用FMOD模块,避免不必要的CPU消耗。
GPU性能优化方案
特效渲染的Pass数量较多
一些特效的渲染可以合并到同一个Pass以节省GPU开销,另外RenderTextur