前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Unity游戏开发】性能优化之在真机上开启DeepProfile与踩坑

【Unity游戏开发】性能优化之在真机上开启DeepProfile与踩坑

作者头像
马三小伙儿
发布2019-10-29 21:42:03
2K0
发布2019-10-29 21:42:03
举报

一、引子

  最近马三入职了新公司,平时除了负责编辑器开发之外还要做一些游戏性能优化方面的工作。我们今天说说如何在真机上开启DeepProfile模式以及一些坑。

二、在真机上开启DeepProfile

  众所周知,使用Unity Profiler开启DeepProfile模式以后,可以看到很多函数的具体消耗和GC情况,包括调用栈这些信息,有了这些信息再对症下药的话优化的效果是很明显的。但是在Editor下开启DeepProfile模式采集到的的数据通常是不准确的,一般我们要在真机上开启DeepProfile模式采集数据。

  首先要确保我们本地已经有了 adb 工具,一般在下载AndroidStudio或者Android SDK的时候,这个东西已经包含了,相对路径在:AndroidSDK/platform-tools/ 目录下,将它配置到环境变量以后就可以直接在命令行执行 adb 命令了。如果还没有搭建Android环境的话可以到这里下载:https://www.androiddevtools.cn/  如果感觉搭建环境比较麻烦的话,也可以直接下载一个简单的adb工具,传送门页面也有单独的 adb 工具下载,才2MB很轻便。

  然后将我们的手机开启开发者模式、开启允许adb调试与安装程序,之后再用数据线与电脑连接,然后执行下面的命令查看手机是否与电脑连接成功:

代码语言:javascript
复制
adb devices

  如果成功的话可以看到我们的手机设备了,如下图所示,VBJ4C18423012974就是我的手机:

   有的时候连接adb会连接不上,我们可以重启adb server试试:

代码语言:javascript
复制
adb kill-server  #关闭 adb server
adb start-server  #开发adb server
adb devices  #查看连接成功的设备

  接着我们还需要对Unity打包设置做一些调整:

  • 配置BuildPlayerSetting,勾选Development Build,这个是必选,否则无法开启调试。另外AutoConnectProfiler这个也需要勾选。然后就正常打包并安装到Android手机上
  • 安装好以后不要手动打开游戏,要通过命令行启动我们的游戏。具体命令是: “/”前面的是你自己项目的包名,“/”后面的代表的是具体的启动Activity的名称,如果你的项目没有改动,使用的是默认的Activity的话,那么直接使用“com.unity3d.player.UnityPlayerActivity”,如果有在AndroidManifest中修改过启动的Activity的话,要换成自己的Activity才可以,比如:“com.msxher.MainActivity”这种
代码语言:javascript
复制
adb shell am start -n com.xxx.xxx/com.unity3d.player.UnityPlayerActivity -e 'unity' '-deepprofiling'
  • 通过命令行拉起游戏以后,还需要将手机连接到Unity的指定端口上面,这样Profiler才能接收到数据,具体命令是: "Unity-"后面跟着你的包名就可以了,如果55000端口不好使的话可以试试4600、34999等端口
代码语言:javascript
复制
adb forward tcp:55000 localabstract:Unity-com.xxx.xxx
  • 此时我们打开Unity中的Profiler窗口,然后选择<Enter IP>这个选项,在里面输入 127.0.0.1 ,如果没有出错的话,就可以连接上我们的手机了,并且可以在窗口中看到各项的数据了。注意不要输入端口号,直接输入 127.0.0.1 这个IP就可以。

  有几个注意事项:

  • 'unity'和'-deepprofiling'之间要有空格
  • 游戏要让命令来启动,不要自己启动,否则会有一个警告,说此Activity已经存在
  • 生成APK的Unity版本与用来开启Profiler的Unity版本必须是同一个
  • 如果自己已经手动启动了unity,则需要使用命令行重新拉起一遍游戏

  按理说如果没有问题的话,此时就可以进行DeepProfile了我们的游戏了,网上很多教程也写到这里就结束了。但是马三在实际操作的过程中,重复试了很多遍,包括重启Unity、重新打包、重新安装手机包等一系列的操作,都是不能在Android上开启DeepProfile模式。马三甚至一度以为是因为DeepProfile模式比较消耗性能,因此Unity在移动平台上禁用了它。直到后来马三把相关的官方文档从头到尾认认真真读了一遍,才发现问题所在,下面就说说这个坑。

三、踩坑

    马三经过阅读官方文档,发现只有在Mono的包上面才能开启deepProfile,而我们的包一直是使用il2cpp的方式进行打包的,因此无论怎样尝试都是不能开启DeepProfile的。后来打了一个Mono的包,果然就可以开启DeepProfile了,各种函数消耗和GC看得清清楚楚。相关官方文档的传送门,建议大家有时间的话仔细阅读一下。

四、总结

  在本篇博客中,马三跟大家一起学习了如何在真机上开启Unity Profiler的DeepProfile模式,并且踩了坑:“只有在以Mono的方式打包的apk上才能开启DeepProfile”,在il2cpp包上是不能开启DeepProfile的。看来遇到问题还是要多多阅读官方文档,毕竟官方文档是最权威、最一手的资料。

作者:马三小伙儿

出处:https://cloud.tencent.com/developer/article/1529722

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、引子
  • 二、在真机上开启DeepProfile
  • 三、踩坑
  • 四、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档