Unity CPU 优化
2016-03-17 17:36
267 查看
一 标准
渲染 15ms 左右
脚本 10ms 左右
其他(主要是物理,动画) 8ms 左右
二 评判瓶颈
查看主要通过unity的profile工具。如果瓶颈在GPU上,profile上会有 waitforpresent 占比 或者通过 Adreno屏蔽掉openGl 来查看帧率是否有提升。
然后在看占比最高的一项是什么引起的。进行相对应的优化。
三 常用手段
1. 开启多线程渲染。
2. 减少GC。NGUI是贡献GC大户,可以通过profile进行逐一排查,优化。减少GetComponent AddComponent次数。对象多进行复用。能用struct就用struct(项目推广比较困难)
3. 去掉无用log。
4. 多进行缓存, 减少文件IO次数
5. update函数 最好只在基础层面出现。外围逻辑不要有update 函数,需要也用Invoke 或者自己实现的timer。
6. 减少 skinmesh的数量 尽量用meshRenderer 同屏数过多 通过骨骼序列帧代替skinmesh实现
7. 合并drawcall StaticBatch DymiticBatch
8. 粒子尽量不用 用的话 场景效果大的粒子加入 离屏不渲染
渲染 15ms 左右
脚本 10ms 左右
其他(主要是物理,动画) 8ms 左右
二 评判瓶颈
查看主要通过unity的profile工具。如果瓶颈在GPU上,profile上会有 waitforpresent 占比 或者通过 Adreno屏蔽掉openGl 来查看帧率是否有提升。
然后在看占比最高的一项是什么引起的。进行相对应的优化。
三 常用手段
1. 开启多线程渲染。
2. 减少GC。NGUI是贡献GC大户,可以通过profile进行逐一排查,优化。减少GetComponent AddComponent次数。对象多进行复用。能用struct就用struct(项目推广比较困难)
3. 去掉无用log。
4. 多进行缓存, 减少文件IO次数
5. update函数 最好只在基础层面出现。外围逻辑不要有update 函数,需要也用Invoke 或者自己实现的timer。
6. 减少 skinmesh的数量 尽量用meshRenderer 同屏数过多 通过骨骼序列帧代替skinmesh实现
7. 合并drawcall StaticBatch DymiticBatch
8. 粒子尽量不用 用的话 场景效果大的粒子加入 离屏不渲染
相关文章推荐
- [Unity] 精灵动画制作中需要注意的一些问题
- unity ngui学习(二)
- Unity PoolManager
- 【Unity】UIScrollView 求当前页数的算法求解
- [Unity 5.3] : [VRDevice] Initialization of device oculus failed 问题解决小结
- unity ngui学习(一)
- [UnityShader2]图形学与CG基础
- 【Unity3D游戏开发】基础知识之Tags和Layers (三二)
- Unity资源加载的选择(同步/异步)
- Unity之 - 导航网格寻路
- Unity3D 基础篇-Camera
- unity3d google play 内购发布
- 在Unity中引用Dll的两种方法
- 解决Xcode6.0.1编译Unity3Dproject报错
- unity3D学习笔记
- MySQL Community Server压缩包的安装配置方法
- Unity社交功能开发——语音聊天
- [UnityShader2]各种空间和基本光照模型
- unity3d ugui 文字背景色
- unity自动获取特效的播放时间,并自动删除特效