说说unity项目的优化
来源:互联网 发布:人工智能伏羲觉醒在线 编辑:程序博客网 时间:2024/05/18 16:19
最近由于公司一个项目的需要(马上就上微信了呦),我被临时抓过来搞了一个月的unity。
主要是帮着搞一下性能的优化以及解决一些兼容性问题。因为我之前对Unity和移动开发都不是很了解,所以简单总结一下,积累点经验。
- 首先是选定基准平台,android是小米1,ios是iphone4。先在小米1上简单的profile了一下,发现android平台的帧率非常不稳,对profile工作影响很大。然后试了一下iphone4,发现ios上的帧率非常稳定,而且每一部分的开销非常明确,果断暂时放弃andriod,基于ios展开后续工作。
- 说一下unity自身提供的高大上的Profile功能,可以实时看到个各部分的开销,比如脚本,动画,渲染,声音等。但在实际的优化过程中这东西的帮助不大。比如你看到渲染的开销最大,但你依然不知道渲染什么东西的开销最大,也就无从优化。但有一个应用场景,这个功能是非常有效的。例如你知道在某个时刻帧率会突然降低,这时你就可以从曲线中看到是那一时刻究竟是什么东西的开销变大了。这时你就可以进一步分析问题原因了。另外在脚本中添加profile关键字也会非常有用。
- 接下来说一下xcode里的debug navigator,在这里面可以实时看到CPU和GPU的占用情况。这玩意实在是太有用了。因为手机游戏里面的东西本来就比较少,稍微关点东西马上瓶颈就变了。如果每次都要自己想办法判断是cpu瓶颈还是gpu瓶颈会非常麻烦。但有了这个,就会方便很多。
- 经过测试分析,角色和场景是大头,其中角色是cpu瓶颈(CPU蒙皮和顶点数据传输),场景是GPU瓶颈。然后我们对美术资源进行了梳理,大量合并了draw call。角色还减了面。简化了一些特效(特效对CPU和GPU的开销都比较大)。一轮优化过后帧率大幅提升。
- 后续测试过程中发现,某些效果出现时帧率会大幅降低。一开始以为是这些效果本身的渲染开销过大。后来将这些效果大幅简化后问题依然存在。继续反复测试最终发现,非均匀缩放动画在unity中非常的慢,一个动画在iphone4上能有10ms的开销。最后将非均匀缩放都改成均匀缩放,效果不变,性能大幅提升。论坛中也有人问过这事儿,这算是unity的一个坑吧。
- 类似的还有一个效果我们会每帧动态生成mesh,这个也很慢,后来改成每帧只重新生成index,性能提升。
- 最终还是提供了一个功能,可以在低端平台上选择关闭一些效果来换取更流畅的帧率。
兼容性方面就说一个比较典型的吧。我们发现在很多android手机上在某些情况下会经常闪屏。后来发现是跟clear次数过多有关(UI用到了好几个Camera,每个都会clear深度),其实UI和特效渲染时都不需要clear,修改后问题解决。
0 0
- 说说unity项目的优化
- Unity项目优化
- UNITY 项目优化
- Unity项目优化--开发项目的一点经验
- Unity项目优化--开发项目的一点经验
- 说说我们的项目计划
- Unity项目内存优化大全
- Unity项目优化基本措施
- Unity 项目管理与优化
- unity项目优化-- 常规性能优化技巧
- unity项目优化-- 常规性能优化技巧
- Unity的内存优化
- Unity的优化功能
- Unity内存的优化
- Unity的内存优化
- 简单说说Android G-sensor 的优化
- 简单说说Android G-sensor 的优化
- unity项目优化----游戏项目场景优化思路
- [C语言](*p)++ 与 *p++ 与 ++*p 拨开一团迷雾
- 看看国内互联网公司是怎样定义数据科学家的
- jquery获取当前点击对象的value
- 编译运行安卓程序时The launch will only sync the application package on the device
- 设计模式C++实现(1)——工厂模式
- 说说unity项目的优化
- Oracle 客户端注册表字符集修改-----解决乱码
- java中>、>>、>>>三个符号的区别
- Web开发中常见的java.lang.IllegalStateException错误
- 蓝桥杯 算法训练 K好数
- Android UI学习笔记 之RadioButton和CheckBox的使用
- POJ2255
- 黑马程序员技术博客之反射
- 业务驱动技术,不深刻理解业务始终是下乘