unity在移动设备上的优化
来源:互联网 发布:ios10.3.3数据快捷键 编辑:程序博客网 时间:2024/04/29 13:19
http://www.cnblogs.com/123ing/p/4130034.html
http://www.cnblogs.com/123ing/p/4130034.html
转自:UNITY3d在移动设备上的一些优化实战(一)-概述 http://blog.csdn.net/leonwei/article/details/39233921
项目进入了中期之后,就需要对程序在移动设备上的表现做分析评估和针对性的优化了,首先前期做优化,很多瓶颈没表现出来,能做的东西不多,而且很多指标会凭预想,如果太后期做优化又会太晚,到时发现一些问题改起来返工量就有太大。前一阵子花了大量时间从 cpu gpu 内存 启动时间 到发热量对项目做了一翻大规模的体检和优化,效果还是显著的,在这里做个笔记,以后开发项目时可以作为经验和提前关注
1.项目情况:笔者所在项目是一个非常重度的手游,甚至开始就是瞄着端游做的,3D世界,2.5D视角,RPG,即使战斗,美术品质要求极高(模型 贴图精度高 ,超过目前市场同类产品)。对于目前大多数移动设备来看,挑战不小,对手机的各种硬件都是挑战。、
2.目标机型:偏中高端,尽量兼容低端,android至少sumsung S3能流畅,ios至少iphone4s流畅。
3.性能指标:内存占用250M以下(这样大量512的机器不会挂掉),初始包100m之内(太多运营不干,太少实在是装不下。。)
用于分析和测试性能的一些利器:
1.首先是unity在编辑器下的statics窗口:提供了dc和顶点数这两个重要指标的查看。缺点在设备看不到,但是对于dc数和顶点数来说,设备和编辑器差不多,用它可以大体看出渲染的压力。
2.unity自带的profiler:可以连接设备看到设备上cpu gpu mem的信息,使用的时候需要勾选development模式。有点是cpu的占用在脚本的层面看的非常仔细,哪个函数占用了太多时间一眼就能看出,基本是分析脚本效率的最佳工具,但是gpu大部分设备不支持看不到,显示的mem信息不太准确,基本上偏离实际占用的内存
3.unity的internal profiler:在playersetting上可以勾选这个选项,勾选后,连接设备,在android的adb或者mac的xcode里会每隔几秒打印出很多关键指标,这个其实非常有用,不过这个功能直到很后期才发现,详细文档见http://docs.unity3d.com/Manual/iphone-InternalProfiler.html
4.android上的adb:adb提供了一组非常强大的分离android程序的工具,http://developer.android.com/tools/help/adb.html
而最常用的是用adb的dumpsys 指令,https://source.android.com/devices/tech/input/dumpsys.html
最常见的包括: adb shell dumpsys meminfo appname 查看实时的内存占用,android的内存分为ps rs,我们一般看ps为准,关于ps rs这些概念可参看http://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android
adb shell dumpsys cpuinfo appname 查看实时的cpu占用,注意这里的cpu可能过百,这是因为多核的原因
adb shell dumpsys gpuinfo appname 查看实时的gpu情况
5.android 的monitor
安装adt后,在sdk\tools\monitor.bat下面有个monitor,是我认为android看性能最好的工具之一,因为它是图形化的,而且基本集成了adb的功能,从内存到cpu到gpu,还有很有用的网络流量使用情况,它的cpu占用是c++层面的统计,看不到脚本,这需要突破那个profilor结合。
6.android上的mongkey测试:它可以模拟随机的用户输入,用来验证你的程序的强壮性吧
adb shell monkey -p -v packname 1000
随机模拟1000条用户事件
7.ios:ios上的工具则显得更加专业更加统一一些,ios就用xcode自带的instruments了
这里有个详细的文档https://developer.apple.com/library/mac/documentation/developertools/Conceptual/InstrumentsUserGuide/Introduction/Introduction.html
看来这么多工具,其实很多是要配合使用的,做u3d开发,其实不只是学会U3D的事情,要让U3D在手机上运行的好,还需要对各个平台有较深的了解。
利用这些工具法线了一些瓶颈,同时也采取了各种策略来提高性能,反正目标就是cpu占用降低,内存占用减少,启动快,发热小,帧率高,GPU占用少,发现的一些问题和做出的具体的一些努力列举如下:
1.使用assetbundle,实现资源分离和共享,将内存控制到200m之内,同时也可以实现资源的在线更新
2.顶点数对渲染无论是cpu还是gpu都是压力最大的贡献者,降低顶点数到8万以下,fps稳定到了30帧左右
3.只使用一盏动态光,不是用阴影,不使用光照探头
粒子系统是cpu上的大头
- unity在移动设备上的优化
- unity在移动设备上打开相机
- Unity 资源优化方法及移动设备上优化
- Unity的内存优化以及在移动平台上的优化
- Unity在移动设备上发热严重问题
- Unite 2016 针对移动设备端的Unity应用优化
- 在移动设备上优化SharePoint 2013站点
- UNITY3d在移动设备上的一些优化实战(一)-概述
- UNITY3d在移动设备上的一些优化实战(一)-概述
- UNITY3d在移动设备上的一些优化实战(一)-概述
- F2FS文件系统实现分析及其在移动设备上的优化
- Unity3d 在移动设备上的摇杆控制 C#
- FusionCharts在iPhone等移动设备上的使用
- 修正页面在移动设备上的显示
- 如何在移动设备上调试html5开发的网页
- 如何在移动设备上调试html5开发的网页
- 如何在移动设备上调试html5开发的网页
- 如何在移动设备上调试html5开发的网页
- 【转载】Oracle数据库总结
- Qt 布局之 QHBoxLayout Class
- 构建高性能的ASP.NET应用(14)
- jzoj5408 【NOIP2017提高A组集训10.21】Dark (巧设状态的DP)
- 数据库MYSQL入门教程(2)——数据库操作指令
- unity在移动设备上的优化
- 网页数字计数系统代码
- 160
- 通过IDEA创建最基础的SSH框架流程
- sql数据处理,各种条件语句
- 17.10.21B组题解
- maven通过maven repository添加依赖包
- 高斯消元法
- 【C++】构造函数 and 析构函数